diff --git a/routes/_components/status/Status.html b/routes/_components/status/Status.html index 7996f06b..11fd2474 100644 --- a/routes/_components/status/Status.html +++ b/routes/_components/status/Status.html @@ -141,6 +141,7 @@ parentElement.parentElement.localName !== 'button') { e.preventDefault() e.stopPropagation() + this.store.setForCurrentTimeline({ignoreBlurEvents: true}) goto(`/statuses/${this.get('statusId')}`) } } diff --git a/routes/_components/status/StatusAuthorName.html b/routes/_components/status/StatusAuthorName.html index b9dd738a..35033eb9 100644 --- a/routes/_components/status/StatusAuthorName.html +++ b/routes/_components/status/StatusAuthorName.html @@ -1,5 +1,7 @@ + href="/accounts/{{status.account.id}}" + focus-key="{{focusKey}}" +> {{status.account.display_name || status.account.username}} \ No newline at end of file diff --git a/routes/_components/status/StatusHeader.html b/routes/_components/status/StatusHeader.html index 5c36ba4c..8836d6d9 100644 --- a/routes/_components/status/StatusHeader.html +++ b/routes/_components/status/StatusHeader.html @@ -3,7 +3,9 @@ - + {{getAccount(notification, status).display_name || ('@' + getAccount(notification, status).username)}} {{#if notification && notification.type === 'reblog'}} @@ -62,6 +64,10 @@ \ No newline at end of file diff --git a/routes/_components/timeline/Timeline.html b/routes/_components/timeline/Timeline.html index 62f98498..1c4f6cd3 100644 --- a/routes/_components/timeline/Timeline.html +++ b/routes/_components/timeline/Timeline.html @@ -65,9 +65,9 @@ export default { oncreate() { console.log('timeline oncreate()') + this.store.setForCurrentTimeline({ignoreBlurEvents: false}) setupTimeline() if (this.store.get('initialized')) { - console.log('initialized!!!!') this.restoreFocus() } }, @@ -159,12 +159,15 @@ }) }, clearFocus() { - /*console.log('clearing focus') + if (this.store.get('ignoreBlurEvents')) { + return + } + console.log('clearing focus') let instanceName = this.store.get('currentInstance') let timelineName = this.get('timeline') this.store.setForTimeline(instanceName, timelineName, { lastFocusedElementSelector: null - })*/ + }) }, restoreFocus() { let lastFocusedElementSelector = this.store.get('lastFocusedElementSelector') diff --git a/routes/_store/mixins.js b/routes/_store/mixins.js index efd7490b..1a247c14 100644 --- a/routes/_store/mixins.js +++ b/routes/_store/mixins.js @@ -12,6 +12,12 @@ function timelineMixins (Store) { let timelineData = timelines[instanceName] || {} return (timelineData[timelineName] || {})[key] } + + Store.prototype.setForCurrentTimeline = function (obj) { + let instanceName = this.get('currentInstance') + let timelineName = this.get('currentTimeline') + this.setForTimeline(instanceName, timelineName, obj) + } } export function mixins (Store) { diff --git a/routes/_store/timelineComputations.js b/routes/_store/timelineComputations.js index dbff7cfe..dd332fb8 100644 --- a/routes/_store/timelineComputations.js +++ b/routes/_store/timelineComputations.js @@ -14,6 +14,7 @@ export function timelineComputations (store) { computeForTimeline(store, 'runningUpdate') computeForTimeline(store, 'initialized') computeForTimeline(store, 'lastFocusedElementSelector') + computeForTimeline(store, 'ignoreBlurEvents') store.compute('lastTimelineItemId', ['timelineItemIds'], (timelineItemIds) => timelineItemIds && timelineItemIds.length && timelineItemIds[timelineItemIds.length - 1]) }