summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-04-01 15:21:42 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-04-01 15:21:42 -0400
commit3b9de1c4bb61aeb098b20d9609c64e4bc73a53ee (patch)
treefd270168b1e6585b482edb2703c0cd0a16ee177a /packages
parentfix type errors in SkNoteDetailed.vue (diff)
downloadsharkey-3b9de1c4bb61aeb098b20d9609c64e4bc73a53ee.tar.gz
sharkey-3b9de1c4bb61aeb098b20d9609c64e4bc73a53ee.tar.bz2
sharkey-3b9de1c4bb61aeb098b20d9609c64e4bc73a53ee.zip
fix type errors in auth.vue
Diffstat (limited to 'packages')
-rw-r--r--packages/frontend/src/pages/auth.vue23
1 files changed, 15 insertions, 8 deletions
diff --git a/packages/frontend/src/pages/auth.vue b/packages/frontend/src/pages/auth.vue
index 898fa7996e..5aa8dbcc5d 100644
--- a/packages/frontend/src/pages/auth.vue
+++ b/packages/frontend/src/pages/auth.vue
@@ -63,24 +63,30 @@ const getUrlParams = () =>
const [k, v] = query.split('=');
result[k] = decodeURI(v);
return result;
- }, {});
+ }, {} as Record<string, string>);
const state = ref<'waiting' | 'accepted' | 'fetch-session-error' | 'denied' | null>(null);
const session = ref<Misskey.entities.AuthSessionShowResponse | null>(null);
function accepted() {
state.value = 'accepted';
- const isMastodon = !!getUrlParams().mastodon;
+ const params = getUrlParams();
+ const isMastodon = !!params.mastodon;
if (session.value && session.value.app.callbackUrl && isMastodon) {
- const redirectUri = decodeURIComponent(getUrlParams().redirect_uri);
+ if (!params.redirect_uri) {
+ throw new Error('Missing redirect_uri');
+ }
+ const redirectUri = decodeURIComponent(params.redirect_uri);
if (!session.value.app.callbackUrl.includes('elk.zone') && !session.value.app.callbackUrl.split('\n').includes(redirectUri)) {
state.value = 'fetch-session-error';
throw new Error('Callback URI doesn\'t match registered app');
}
const callbackUrl = session.value.app.callbackUrl.includes('elk.zone') ? new URL(session.value.app.callbackUrl) : new URL(redirectUri);
callbackUrl.searchParams.append('code', session.value.token);
- if (getUrlParams().state) callbackUrl.searchParams.append('state', getUrlParams().state);
- location.href = callbackUrl.toString();
+ if (params.state) {
+ callbackUrl.searchParams.append('state', params.state);
+ }
+ window.location.href = callbackUrl.toString();
} else if (session.value && session.value.app.callbackUrl) {
const url = new URL(session.value.app.callbackUrl);
if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:', 'vbscript:'].includes(url.protocol)) throw new Error('invalid url');
@@ -96,14 +102,15 @@ onMounted(async () => {
if (!$i) return;
try {
- session.value = await misskeyApi('auth/session/show', {
+ const sess = await misskeyApi('auth/session/show', {
token: props.token,
});
+ session.value = sess;
// 既に連携していた場合
- if (session.value.app.isAuthorized) {
+ if (sess.app.isAuthorized) {
await misskeyApi('auth/accept', {
- token: session.value.token,
+ token: sess.token,
});
accepted();
} else {