summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2021-10-31 16:01:50 +0900
committerGitHub <noreply@github.com>2021-10-31 16:01:50 +0900
commit303c5abfb42939011dd1bd48f5516a4ec2f2ac1d (patch)
treed53b7914fdacbb08531ff3bd342b3d004871c0a7 /src
parentfeat: thread mute (#7930) (diff)
downloadmisskey-303c5abfb42939011dd1bd48f5516a4ec2f2ac1d.tar.gz
misskey-303c5abfb42939011dd1bd48f5516a4ec2f2ac1d.tar.bz2
misskey-303c5abfb42939011dd1bd48f5516a4ec2f2ac1d.zip
feat: クライアントでログインするアカウントidを指定するクエリ(loginId=:userId) (#7929)
* feat: ログインするアカウントのIDをクエリ文字列で指定する機能 * await? * rename
Diffstat (limited to 'src')
-rw-r--r--src/client/init.ts21
-rw-r--r--src/client/scripts/login-id.ts11
2 files changed, 32 insertions, 0 deletions
diff --git a/src/client/init.ts b/src/client/init.ts
index 123d4020e1..654e176398 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -37,6 +37,8 @@ import { isMobile } from '@client/scripts/is-mobile';
import { initializeSw } from '@client/scripts/initialize-sw';
import { reloadChannel } from '@client/scripts/unison-reload';
import { reactionPicker } from '@client/scripts/reaction-picker';
+import { getUrlWithoutLoginId } from '@client/scripts/login-id';
+import { getAccountFromId } from '@client/scripts/get-account-from-id';
console.info(`Misskey v${version}`);
@@ -116,6 +118,25 @@ const html = document.documentElement;
html.setAttribute('lang', lang);
//#endregion
+//#region loginId
+const params = new URLSearchParams(location.search);
+const loginId = params.get('loginId');
+
+if (loginId) {
+ const target = getUrlWithoutLoginId(location.href);
+
+ if (!$i || $i.id !== loginId) {
+ const account = await getAccountFromId(loginId);
+ if (account) {
+ await login(account.token, target);
+ }
+ }
+
+ history.replaceState({ misskey: 'loginId' }, '', target);
+}
+
+//#endregion
+
//#region Fetch user
if ($i && $i.token) {
if (_DEV_) {
diff --git a/src/client/scripts/login-id.ts b/src/client/scripts/login-id.ts
new file mode 100644
index 0000000000..0f9c6be4a9
--- /dev/null
+++ b/src/client/scripts/login-id.ts
@@ -0,0 +1,11 @@
+export function getUrlWithLoginId(url: string, loginId: string) {
+ const u = new URL(url, origin);
+ u.searchParams.append('loginId', loginId);
+ return u.toString();
+}
+
+export function getUrlWithoutLoginId(url: string) {
+ const u = new URL(url);
+ u.searchParams.delete('loginId');
+ return u.toString();
+}