From c546d8787db07ece89726fa8f58b0327d720bf50 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 12 Sep 2018 13:12:26 +0200 Subject: [PATCH] Add last used to token on profile page (#1659) --- package.json | 1 + .../ha-long-lived-access-tokens-card.js | 13 +++++++-- src/panels/profile/ha-refresh-tokens-card.js | 27 ++++++++++++++++--- src/panels/profile/ha-settings-row.js | 6 ++++- src/translations/en.json | 7 ++++- yarn.lock | 25 +++++++++++++++++ 6 files changed, 72 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 82c5f930eb..4438289f1e 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@polymer/paper-tabs": "^3.0.0-pre.19", "@polymer/paper-toast": "^3.0.0-pre.19", "@polymer/paper-toggle-button": "^3.0.0-pre.19", + "@polymer/paper-tooltip": "^3.0.0-pre.26", "@polymer/polymer": "^3.0.2", "@vaadin/vaadin-combo-box": "4.1.0-alpha2", "@vaadin/vaadin-date-picker": "3.2.0-alpha3", diff --git a/src/panels/profile/ha-long-lived-access-tokens-card.js b/src/panels/profile/ha-long-lived-access-tokens-card.js index 9ada293fe9..e85e44856c 100644 --- a/src/panels/profile/ha-long-lived-access-tokens-card.js +++ b/src/panels/profile/ha-long-lived-access-tokens-card.js @@ -44,9 +44,10 @@ class HaLongLivedTokens extends LocalizeMixin(EventsMixin(PolymerElement)) { @@ -88,6 +89,14 @@ class HaLongLivedTokens extends LocalizeMixin(EventsMixin(PolymerElement)) { ); } + _formatLastUsed(item) { + return item.last_used_at ? this.localize( + 'ui.panel.profile.refresh_tokens.last_used', + 'date', formatDateTime(new Date(item.last_used_at)), + 'location', item.last_used_ip + ) : this.localize('ui.panel.profile.refresh_tokens.not_used'); + } + async _handleCreate() { const name = prompt(this.localize('ui.panel.profile.long_lived_access_tokens.prompt_name')); if (!name) return; diff --git a/src/panels/profile/ha-refresh-tokens-card.js b/src/panels/profile/ha-refresh-tokens-card.js index a9f2569a33..082294c797 100644 --- a/src/panels/profile/ha-refresh-tokens-card.js +++ b/src/panels/profile/ha-refresh-tokens-card.js @@ -1,4 +1,5 @@ import '@polymer/paper-icon-button/paper-icon-button.js'; +import '@polymer/paper-tooltip/paper-tooltip.js'; import { html } from '@polymer/polymer/lib/utils/html-tag.js'; import { PolymerElement } from '@polymer/polymer/polymer-element.js'; @@ -29,10 +30,22 @@ class HaRefreshTokens extends LocalizeMixin(EventsMixin(PolymerElement)) {
[[localize('ui.panel.profile.refresh_tokens.description')]]
@@ -64,6 +77,14 @@ class HaRefreshTokens extends LocalizeMixin(EventsMixin(PolymerElement)) { ); } + _formatLastUsed(item) { + return item.last_used_at ? this.localize( + 'ui.panel.profile.refresh_tokens.last_used', + 'date', formatDateTime(new Date(item.last_used_at)), + 'location', item.last_used_ip + ) : this.localize('ui.panel.profile.refresh_tokens.not_used'); + } + async _handleDelete(ev) { if (!confirm(this.localize('ui.panel.profile.refresh_tokens.confirm_delete', 'name', ev.model.item.client_id))) { return; diff --git a/src/panels/profile/ha-settings-row.js b/src/panels/profile/ha-settings-row.js index c6584f0126..7d2a759f33 100644 --- a/src/panels/profile/ha-settings-row.js +++ b/src/panels/profile/ha-settings-row.js @@ -22,7 +22,7 @@ class HaSettingsRow extends PolymerElement { padding-right: 16px; } - +
@@ -35,6 +35,10 @@ class HaSettingsRow extends PolymerElement { narrow: { type: Boolean, reflectToAttribute: true, + }, + threeLine: { + type: Boolean, + value: false, } }; } diff --git a/src/translations/en.json b/src/translations/en.json index 8f78aff660..b1b75a0f48 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -752,14 +752,19 @@ "description": "Each refresh token represents a login session. Refresh tokens will be automatically removed when you click log out. Below a list of refresh tokens that are currently active for your account.", "token_title": "Refresh token for {clientId}", "created_at": "Created at {date}", + "last_used": "Last used at {date} from {location}", + "not_used": "Has never been used", "confirm_delete": "Are you sure you want to delete the refresh token for {name}?", - "delete_failed": "Failed to delete the refresh token." + "delete_failed": "Failed to delete the refresh token.", + "current_token_tooltip": "Unable to delete current refresh token" }, "long_lived_access_tokens": { "header": "Long-Lived Access Tokens", "description": "Create long-lived access tokens to allow your scripts to interact with your Home Assistant instance. Each token will be valid for 10 years from creation. The following long-lived access tokens are currently active.", "learn_auth_requests": "Learn how to make authenticated requests.", "created_at": "Created at {date}", + "last_used": "Last used at {date} from {location}", + "not_used": "Has never been used", "confirm_delete": "Are you sure you want to delete the access token for {name}?", "delete_failed": "Failed to delete the access token.", "create": "Create Token", diff --git a/yarn.lock b/yarn.lock index 41331ca370..6408423df9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -641,6 +641,10 @@ version "3.0.0-pre.19" resolved "https://registry.yarnpkg.com/@polymer/font-roboto/-/font-roboto-3.0.0-pre.19.tgz#d67384a000eebb2632c00c268182a8528aca4a7c" +"@polymer/font-roboto@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@polymer/font-roboto/-/font-roboto-3.0.1.tgz#0f3e184ce1c09e132653e34cbbbf1014164a986c" + "@polymer/iron-a11y-announcer@^3.0.0-pre.12", "@polymer/iron-a11y-announcer@^3.0.0-pre.19": version "3.0.0-pre.19" resolved "https://registry.yarnpkg.com/@polymer/iron-a11y-announcer/-/iron-a11y-announcer-3.0.0-pre.19.tgz#6a3b724df1e1cfda6f1270c359136d3e55ed7363" @@ -704,6 +708,12 @@ dependencies: "@polymer/polymer" "^3.0.0" +"@polymer/iron-flex-layout@^3.0.0-pre.25": + version "3.0.0-pre.26" + resolved "https://registry.yarnpkg.com/@polymer/iron-flex-layout/-/iron-flex-layout-3.0.0-pre.26.tgz#5b73eeafa63bcd5cfe4916a6beb8d39b32414e0e" + dependencies: + "@polymer/polymer" "^3.0.0" + "@polymer/iron-form-element-behavior@^3.0.0-pre.19": version "3.0.0-pre.19" resolved "https://registry.yarnpkg.com/@polymer/iron-form-element-behavior/-/iron-form-element-behavior-3.0.0-pre.19.tgz#0fee7892af6a79cea7ef7ef1c7f738ac9f916ec6" @@ -1058,6 +1068,14 @@ "@polymer/iron-flex-layout" "^3.0.0-pre.19" "@polymer/polymer" "^3.0.0" +"@polymer/paper-styles@^3.0.0-pre.25": + version "3.0.0-pre.26" + resolved "https://registry.yarnpkg.com/@polymer/paper-styles/-/paper-styles-3.0.0-pre.26.tgz#301c8d98505f5abf1cd8afed38936f7c112ab76c" + dependencies: + "@polymer/font-roboto" "^3.0.1" + "@polymer/iron-flex-layout" "^3.0.0-pre.25" + "@polymer/polymer" "^3.0.0" + "@polymer/paper-tabs@^3.0.0-pre.19": version "3.0.0-pre.19" resolved "https://registry.yarnpkg.com/@polymer/paper-tabs/-/paper-tabs-3.0.0-pre.19.tgz#c758179061d713d830b4d77e2b5fa640508b2a18" @@ -1091,6 +1109,13 @@ "@polymer/paper-styles" "^3.0.0-pre.19" "@polymer/polymer" "^3.0.0" +"@polymer/paper-tooltip@^3.0.0-pre.26": + version "3.0.0-pre.26" + resolved "https://registry.yarnpkg.com/@polymer/paper-tooltip/-/paper-tooltip-3.0.0-pre.26.tgz#1fe5009df63df8a12784426f77f57cf0f249bd8e" + dependencies: + "@polymer/paper-styles" "^3.0.0-pre.25" + "@polymer/polymer" "^3.0.0" + "@polymer/polymer@^3.0.0", "@polymer/polymer@^3.0.0-pre.13", "@polymer/polymer@^3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@polymer/polymer/-/polymer-3.0.2.tgz#626e6f9fae9716b0962ce0211e21df242153eab2"