diff --git a/src/client/app/common/views/pages/follow.vue b/src/client/app/common/views/pages/follow.vue index f08ddf264..4a01affa8 100644 --- a/src/client/app/common/views/pages/follow.vue +++ b/src/client/app/common/views/pages/follow.vue @@ -72,11 +72,40 @@ export default Vue.extend({ const acct = new URL(location.href).searchParams.get('acct'); this.fetching = true; Progress.start(); - this.$root.api('users/show', parseAcct(acct)).then(user => { - this.user = user; - this.fetching = false; - Progress.done(); - }); + if (acct.match(/^https?:/)) { + this.$root.api('ap/show', { + uri: acct + }).then((res: { type: string, object: any }) => { + if (res.type !== 'User') { + this.$root.dialog({ + type: 'error', + text: 'acct is not an user' + }); + } else { + this.user = res.object; + } + }).catch((e: any) => { + this.$root.dialog({ + type: 'error', + text: e.message + }); + }).finally(() => { + this.fetching = false; + Progress.done(); + }); + } else { + this.$root.api('users/show', parseAcct(acct)).then((user: any) => { + this.user = user; + }).catch((e: any) => { + this.$root.dialog({ + type: 'error', + text: e.message + }); + }).finally(() => { + this.fetching = false; + Progress.done(); + }); + } }, async onClick() {