Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Side by Side Diff: remoting/webapp/crd/js/host_list.js

Issue 848993002: Improve apps v2 upgrade UX (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address CL feedback Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/webapp/crd/js/event_handlers.js ('k') | remoting/webapp/crd/js/remoting.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * Class representing the host-list portion of the home screen UI. 7 * Class representing the host-list portion of the home screen UI.
8 */ 8 */
9 9
10 'use strict'; 10 'use strict';
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 var canChangeLocalHostState = 282 var canChangeLocalHostState =
283 (state != remoting.HostController.State.NOT_IMPLEMENTED) && 283 (state != remoting.HostController.State.NOT_IMPLEMENTED) &&
284 (state != remoting.HostController.State.UNKNOWN) && 284 (state != remoting.HostController.State.UNKNOWN) &&
285 (state != remoting.HostController.State.NOT_INSTALLED || 285 (state != remoting.HostController.State.NOT_INSTALLED ||
286 remoting.isMe2MeInstallable()) && 286 remoting.isMe2MeInstallable()) &&
287 (enabled || this.lastError_ == ''); 287 (enabled || this.lastError_ == '');
288 288
289 remoting.updateModalUi(enabled ? 'enabled' : 'disabled', 'data-daemon-state'); 289 remoting.updateModalUi(enabled ? 'enabled' : 'disabled', 'data-daemon-state');
290 var element = document.getElementById('daemon-control'); 290 var element = document.getElementById('daemon-control');
291 element.hidden = !canChangeLocalHostState; 291 element.hidden = !canChangeLocalHostState;
292 element = document.getElementById('host-list-empty-hosting-supported'); 292
293 element.hidden = !canChangeLocalHostState; 293 if (noHostsRegistered) {
294 element = document.getElementById('host-list-empty-hosting-unsupported'); 294 this.showEmptyText_(canChangeLocalHostState);
295 element.hidden = canChangeLocalHostState; 295 }
296 }; 296 };
297 297
298 /** 298 /**
299 * Displays a message to the user when the host list is empty.
300 *
301 * @param {boolean} hostingSupported
302 * @return {void}
303 * @private
304 */
305 remoting.HostList.prototype.showEmptyText_ = function(hostingSupported) {
Jamie 2015/01/15 20:51:30 "Empty text" suggests that the text is empty, not
kelvinp 2015/01/20 19:41:00 Done.
306 /**
307 * @param {string} email
308 * @param {string} fullName
309 * @return {string}
310 */
311 function buildMigrationTips(email, fullName) {
312 var params = [
313 fullName,
314 email,
315 '<a href="https://support.google.com/chrome/answer/2364824?hl=en" ' +
316 'target="_blank">',
317 '</a>'];
318 return l10n.getTranslationOrError(
319 /*i18n-content*/'HOST_LIST_EMPTY_V2_MIGRATION', params);
320 }
321
322 var emptyTextDiv = this.noHosts_;
Jamie 2015/01/15 20:51:30 I'm not sure what the value of this assignment is.
kelvinp 2015/01/20 19:41:00 This variable is necessary for the annonymous func
323
324 this.isSignedInWithDifferentIdentity_().then(
325 /**
326 * @param {{ email: string, fullName: string}} previousIdentity
327 * @this {remoting.HostList}
328 */
329 function(previousIdentity) {
330 var buttonLabel = l10n.getTranslationOrError(
331 /*i18n-content*/'HOME_DAEMON_START_BUTTON');
332
333 if (Boolean(previousIdentity)) {
334 emptyTextDiv.innerHTML = buildMigrationTips(previousIdentity.email,
335 previousIdentity.fullName);
336 } else if (hostingSupported) {
337 emptyTextDiv.innerText = l10n.getTranslationOrError(
338 /*i18n-content*/'HOST_LIST_EMPTY_HOSTING_SUPPORTED',
339 [buttonLabel]);
340 } else {
341 emptyTextDiv.innerText = l10n.getTranslationOrError(
342 /*i18n-content*/'HOST_LIST_EMPTY_HOSTING_UNSUPPORTED',
343 [buttonLabel]);
344 }
345 }
346 );
347 };
348
349 /**
350 * @return {Promise} A Promise object that would resolve to
351 * { email: string, fullName: string} if the user has signed in with a
352 * different account that has hosts registered to it. Otherwise, resolves to
353 * null.
354 * @private
355 */
356 remoting.HostList.prototype.isSignedInWithDifferentIdentity_ = function() {
357 if (!base.isAppsV2()) {
358 return Promise.resolve(null);
Jamie 2015/01/15 20:51:31 I think my original objection still applies. For t
kelvinp 2015/01/20 19:41:00 Done.
359 }
360
361 var getCachedInfo = new Promise(
Jamie 2015/01/15 20:51:30 s/Info/UserInfo/ You could also consider s/Cached
kelvinp 2015/01/20 19:41:00 Done.
362 /** @param {function(*) : void} resolve */
363 function(resolve) {
364 chrome.storage.local.get(
365 ['remoting-email','remoting-fullname',remoting.HostList.HOSTS_KEY],
Jamie 2015/01/15 20:51:30 Nit: Spaces between list elements.
Jamie 2015/01/15 20:51:30 These strings are duplicated. You should define th
kelvinp 2015/01/20 19:41:00 Done.
366 /** @param {*} results */
367 function(results) { resolve(results); }
368 );
369 }
370 );
371
372 var getCurrentEmail = new Promise(
373 /**
374 * @param {function(*) : void} resolve
375 * @param {function(*) : void} reject
376 */
377 function(resolve, reject) {
378 /**
379 * @param {string} email
380 * @param {string} name
381 */
382 remoting.identity.getUserInfo(function(email, name) {
383 resolve(email);
384 }, reject);
385 }
386 );
387
388 return Promise.all([getCachedInfo, getCurrentEmail]).then(
389 /** @param {Object} results */
390 function(results){
391 var cached = /** @type {Object} */ (results[0]);
Jamie 2015/01/15 20:51:31 s/cached/cachedUserInfo/
392 var currentEmail = /** @type {string} */ (results[1]);
393 var cachedHosts = /** @type {Array} */
394 (base.jsonParseSafe(cached[remoting.HostList.HOSTS_KEY]));
395 var cachedEmail = getStringAttr(cached, 'remoting-email', '');
396 var cachedName = getStringAttr(cached, 'remoting-fullname', '');
397
398 if (cachedEmail && cachedEmail !== currentEmail &&
399 Array.isArray(cachedHosts) && cachedHosts.length !== 0) {
400 return {
401 email: cachedEmail,
402 fullName: cachedName
403 };
404 }
405 return null;
406 });
407 };
408
409 /**
299 * Remove a host from the list, and deregister it. 410 * Remove a host from the list, and deregister it.
300 * @param {remoting.HostTableEntry} hostTableEntry The host to be removed. 411 * @param {remoting.HostTableEntry} hostTableEntry The host to be removed.
301 * @return {void} Nothing. 412 * @return {void} Nothing.
302 * @private 413 * @private
303 */ 414 */
304 remoting.HostList.prototype.deleteHost_ = function(hostTableEntry) { 415 remoting.HostList.prototype.deleteHost_ = function(hostTableEntry) {
305 this.table_.removeChild(hostTableEntry.tableRow); 416 this.table_.removeChild(hostTableEntry.tableRow);
306 var index = this.hostTableEntries_.indexOf(hostTableEntry); 417 var index = this.hostTableEntries_.indexOf(hostTableEntry);
307 if (index != -1) { 418 if (index != -1) {
308 this.hostTableEntries_.splice(index, 1); 419 this.hostTableEntries_.splice(index, 1);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 }); 563 });
453 } else { 564 } else {
454 this.refresh(remoting.updateLocalHostState); 565 this.refresh(remoting.updateLocalHostState);
455 } 566 }
456 }; 567 };
457 568
458 /** 569 /**
459 * Save the host list to local storage. 570 * Save the host list to local storage.
460 */ 571 */
461 remoting.HostList.prototype.save_ = function() { 572 remoting.HostList.prototype.save_ = function() {
573 if (this.hosts_.length === 0) {
574 return;
575 }
Jamie 2015/01/15 20:51:30 I don't think this logic is correct. It will preve
kelvinp 2015/01/20 19:41:00 Done.
576
462 var items = {}; 577 var items = {};
463 items[remoting.HostList.HOSTS_KEY] = JSON.stringify(this.hosts_); 578 items[remoting.HostList.HOSTS_KEY] = JSON.stringify(this.hosts_);
579 if (base.isAppsV2()) {
580 chrome.storage.local.remove('remoting-email');
Jamie 2015/01/15 20:51:31 Clearing this here seems a bit ad-hoc. I think you
kelvinp 2015/01/20 19:41:00 Done.
581 }
464 chrome.storage.local.set(items); 582 chrome.storage.local.set(items);
465 }; 583 };
466 584
467 /** 585 /**
468 * Key name under which Me2Me hosts are cached. 586 * Key name under which Me2Me hosts are cached.
469 */ 587 */
470 remoting.HostList.HOSTS_KEY = 'me2me-cached-hosts'; 588 remoting.HostList.HOSTS_KEY = 'me2me-cached-hosts';
471 589
472 /** @type {remoting.HostList} */ 590 /** @type {remoting.HostList} */
473 remoting.hostList = null; 591 remoting.hostList = null;
OLDNEW
« no previous file with comments | « remoting/webapp/crd/js/event_handlers.js ('k') | remoting/webapp/crd/js/remoting.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698