From 95fa082b948c6c0df1d4ac66d342386896a6dd16 Mon Sep 17 00:00:00 2001 From: shu Date: Wed, 29 May 2019 09:02:43 +0200 Subject: [PATCH] Mastodon: Context --- public/index.html | 2 +- src/App.vue | 1 + src/helpers/loadable/ErrorLoadable.ts | 4 ++ src/helpers/loadable/Loadable.ts | 4 ++ src/services/mastodon/Client.vue | 75 +++++++++++++++++++++----- src/services/mastodon/Notification.vue | 9 +++- src/services/mastodon/Status.vue | 49 ++++++++--------- src/services/mastodon/Types.ts | 5 ++ 8 files changed, 106 insertions(+), 43 deletions(-) diff --git a/public/index.html b/public/index.html index 8321c71..cbafbee 100644 --- a/public/index.html +++ b/public/index.html @@ -10,7 +10,7 @@ -
+
diff --git a/src/App.vue b/src/App.vue index bb58461..0fd3949 100644 --- a/src/App.vue +++ b/src/App.vue @@ -340,6 +340,7 @@ input, select, button, textarea float: right width: 1.2em .service-content + flex-grow: 1 overflow: hidden .service-loader display: inline-block diff --git a/src/helpers/loadable/ErrorLoadable.ts b/src/helpers/loadable/ErrorLoadable.ts index c357158..96f9dd4 100644 --- a/src/helpers/loadable/ErrorLoadable.ts +++ b/src/helpers/loadable/ErrorLoadable.ts @@ -9,6 +9,10 @@ export default class ErrorLoadable extends Loadable { this.error = undefined } + get hasError() { + return this.error !== undefined + } + get isSuccess() { return this.loaded && this.error === undefined } diff --git a/src/helpers/loadable/Loadable.ts b/src/helpers/loadable/Loadable.ts index f17e2fd..4279342 100644 --- a/src/helpers/loadable/Loadable.ts +++ b/src/helpers/loadable/Loadable.ts @@ -9,6 +9,10 @@ export default class Loadable { this.reset() } + get isLoaded() { + return this.loaded + } + reset() { this.loaded = false this.data = undefined diff --git a/src/services/mastodon/Client.vue b/src/services/mastodon/Client.vue index 9c75f41..dbcb349 100644 --- a/src/services/mastodon/Client.vue +++ b/src/services/mastodon/Client.vue @@ -1,19 +1,36 @@ @@ -23,7 +23,7 @@ import FromNowMixin from '@/components/FromNowMixin' import ShowMediaMixin from '@/components/ShowMediaMixin' import Account from './Account.vue' import Status from './Status.vue' -import { MarkStatus, Notification as INotification, PollVote } from './Types' +import { MarkStatus, Notification as INotification, PollVote, Status as IStatus } from './Types' @Component({ components: { Account, Status } }) export default class Notification extends Mixins(ShowMediaMixin, FromNowMixin) { @@ -46,5 +46,10 @@ export default class Notification extends Mixins(ShowMediaMixin, FromNowMixin) { return action } + @Emit('context') + passContext(status: IStatus) { + return status + } + } diff --git a/src/services/mastodon/Status.vue b/src/services/mastodon/Status.vue index da07022..25c2818 100644 --- a/src/services/mastodon/Status.vue +++ b/src/services/mastodon/Status.vue @@ -36,7 +36,7 @@ template(v-if="status.card.image") img(v-if="showMedia" :src="status.card.image") a(v-else-if="status.card.type == 'photo'" :src="status.card.image" target="_blank") Hidden media - status.reblog(v-else :status="status.reblog" :showMedia="showMedia" @mark="passMark" @vote="passVote") + status.reblog(v-else :status="status.reblog" :showMedia="showMedia" @mark="passMark" @vote="passVote" @context="passContext") .meta(v-if="!status.reblog") a.replies(@click.stop.prevent="makeReply(status)") @@ -53,8 +53,8 @@ template(v-else-if="status.visibility == 'unlisted'") 👁 template(v-else-if="status.visibility == 'private'") ⚿ template(v-else-if="status.visibility == 'direct'") ✉ - a.fil(v-if="status.in_reply_to_id" @click.stop.prevent="showReply(status.in_reply_to_id)") - | Voir le fil + a.fil(@click.stop.prevent="passContext(status)") + span.text-icon ⮃