From cff01e84096f6db854ccde3ff912c945b50915c2 Mon Sep 17 00:00:00 2001 From: FrantaBOT Date: Wed, 18 Sep 2024 08:43:07 +0200 Subject: [PATCH 1/4] Fixed Kick auth --- src/site/kick.com/KickSite.vue | 3 ++- src/site/kick.com/composable/useUserdata.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/site/kick.com/KickSite.vue b/src/site/kick.com/KickSite.vue index a0bd221a..243776c4 100644 --- a/src/site/kick.com/KickSite.vue +++ b/src/site/kick.com/KickSite.vue @@ -34,8 +34,9 @@ document.body.setAttribute("seventv-kick", "true"); const cookies = useCookies(); const auth = cookies.get("XSRF-TOKEN"); +const sessionToken = cookies.get("session_token"); -const user = auth ? await useUserdata(auth) : null; +const user = auth ? await useUserdata(auth, sessionToken) : null; if (user) { const updateIdentity = (data: typeof user) => { diff --git a/src/site/kick.com/composable/useUserdata.ts b/src/site/kick.com/composable/useUserdata.ts index 4c7feeed..dcd9c0a5 100644 --- a/src/site/kick.com/composable/useUserdata.ts +++ b/src/site/kick.com/composable/useUserdata.ts @@ -1,4 +1,4 @@ -export async function useUserdata(auth: string): Promise<{ +export async function useUserdata(auth: string, sessionToken: string): Promise<{ id: number; username: string; bio: string; @@ -15,6 +15,7 @@ export async function useUserdata(auth: string): Promise<{ }> { const data = await fetch("https://kick.com/api/v1/user", { headers: { + "Authorization": "Bearer " + sessionToken, "X-XSRF-TOKEN": auth, }, method: "GET", From e03f65cadb6831f4735d72fd75c456eb1f73e251 Mon Sep 17 00:00:00 2001 From: FrantaBOT Date: Wed, 18 Sep 2024 08:48:28 +0200 Subject: [PATCH 2/4] Fixed kick account linking --- src/site/kick.com/KickSite.vue | 2 + src/site/kick.com/modules/auth/AuthButton.vue | 8 +-- src/site/kick.com/modules/auth/AuthModule.vue | 72 +++++++++++++++++++ 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 src/site/kick.com/modules/auth/AuthModule.vue diff --git a/src/site/kick.com/KickSite.vue b/src/site/kick.com/KickSite.vue index 243776c4..f2b9947f 100644 --- a/src/site/kick.com/KickSite.vue +++ b/src/site/kick.com/KickSite.vue @@ -59,6 +59,8 @@ if (user) { actor.setPlatformUserID("KICK", data.id.toString()); }; + //TODO: subscribe for allowing new login + updateIdentity(user); } diff --git a/src/site/kick.com/modules/auth/AuthButton.vue b/src/site/kick.com/modules/auth/AuthButton.vue index 9d311678..458a9a3d 100644 --- a/src/site/kick.com/modules/auth/AuthButton.vue +++ b/src/site/kick.com/modules/auth/AuthButton.vue @@ -191,15 +191,15 @@ function closePopup(): void { } watchEffect(() => { - const navBlock = document.querySelector(".main-navbar"); + const navBlock = document.getElementsByTagName("nav")[0]; if (navBlock) { - navBlock.lastElementChild?.insertAdjacentElement("beforebegin", navContainer); + navBlock.lastElementChild?.insertAdjacentElement("afterbegin", navContainer); } if (props.slug) { - const channelInfoBlock = document.querySelector(".channel-info, .stream-info"); + const channelInfoBlock = document.getElementById("channel-content") if (channelInfoBlock) { - channelInfoBlock.insertAdjacentElement("afterend", channelContainer); + channelInfoBlock.firstChild.insertAdjacentElement("afterend", channelContainer); } } }); diff --git a/src/site/kick.com/modules/auth/AuthModule.vue b/src/site/kick.com/modules/auth/AuthModule.vue new file mode 100644 index 00000000..52ae4a2c --- /dev/null +++ b/src/site/kick.com/modules/auth/AuthModule.vue @@ -0,0 +1,72 @@ + + + From 0f14471942408dfdf5f678998fb21b0e13513315 Mon Sep 17 00:00:00 2001 From: FrantaBOT Date: Sat, 21 Sep 2024 02:26:34 +0200 Subject: [PATCH 3/4] Fixed formatting --- src/site/kick.com/composable/useUserdata.ts | 7 +++++-- src/site/kick.com/modules/auth/AuthButton.vue | 2 +- src/site/kick.com/modules/auth/AuthModule.vue | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/site/kick.com/composable/useUserdata.ts b/src/site/kick.com/composable/useUserdata.ts index dcd9c0a5..6040e3c0 100644 --- a/src/site/kick.com/composable/useUserdata.ts +++ b/src/site/kick.com/composable/useUserdata.ts @@ -1,4 +1,7 @@ -export async function useUserdata(auth: string, sessionToken: string): Promise<{ +export async function useUserdata( + auth: string, + sessionToken: string, +): Promise<{ id: number; username: string; bio: string; @@ -15,7 +18,7 @@ export async function useUserdata(auth: string, sessionToken: string): Promise<{ }> { const data = await fetch("https://kick.com/api/v1/user", { headers: { - "Authorization": "Bearer " + sessionToken, + Authorization: "Bearer " + sessionToken, "X-XSRF-TOKEN": auth, }, method: "GET", diff --git a/src/site/kick.com/modules/auth/AuthButton.vue b/src/site/kick.com/modules/auth/AuthButton.vue index 458a9a3d..8a09669c 100644 --- a/src/site/kick.com/modules/auth/AuthButton.vue +++ b/src/site/kick.com/modules/auth/AuthButton.vue @@ -197,7 +197,7 @@ watchEffect(() => { } if (props.slug) { - const channelInfoBlock = document.getElementById("channel-content") + const channelInfoBlock = document.getElementById("channel-content"); if (channelInfoBlock) { channelInfoBlock.firstChild.insertAdjacentElement("afterend", channelContainer); } diff --git a/src/site/kick.com/modules/auth/AuthModule.vue b/src/site/kick.com/modules/auth/AuthModule.vue index 52ae4a2c..2f1d19d9 100644 --- a/src/site/kick.com/modules/auth/AuthModule.vue +++ b/src/site/kick.com/modules/auth/AuthModule.vue @@ -43,19 +43,19 @@ const observer = new MutationObserver((mutationList) => { } }); -const head = document.getElementsByTagName('head')[0]; +const head = document.getElementsByTagName("head")[0]; observer.observe(head, { childList: true, subtree: true }); const appToken = useLocalStorage(LOCAL_STORAGE_KEYS.APP_TOKEN, ""); const urlParams = new URLSearchParams(window.location.search); -if (urlParams.get('seventv_token')) { +if (urlParams.get("seventv_token")) { watch( () => store.identity, (identity) => { - if (!urlParams.get('seventv_token')) return; + if (!urlParams.get("seventv_token")) return; - appToken.value = urlParams.get('seventv_token'); + appToken.value = urlParams.get("seventv_token"); setBioCode(identity as KickIdentity, "", cookies).then(() => { setTimeout(() => { From a38062d48eb35342479f60c760b02411329a8443 Mon Sep 17 00:00:00 2001 From: FrantaBOT Date: Wed, 25 Sep 2024 19:10:02 +0200 Subject: [PATCH 4/4] fixed types --- src/site/kick.com/composable/useUserdata.ts | 2 +- src/site/kick.com/modules/auth/AuthButton.vue | 2 +- src/site/kick.com/modules/auth/AuthModule.vue | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/site/kick.com/composable/useUserdata.ts b/src/site/kick.com/composable/useUserdata.ts index 6040e3c0..b1022e98 100644 --- a/src/site/kick.com/composable/useUserdata.ts +++ b/src/site/kick.com/composable/useUserdata.ts @@ -1,6 +1,6 @@ export async function useUserdata( auth: string, - sessionToken: string, + sessionToken: string | undefined, ): Promise<{ id: number; username: string; diff --git a/src/site/kick.com/modules/auth/AuthButton.vue b/src/site/kick.com/modules/auth/AuthButton.vue index 8a09669c..02afd88d 100644 --- a/src/site/kick.com/modules/auth/AuthButton.vue +++ b/src/site/kick.com/modules/auth/AuthButton.vue @@ -199,7 +199,7 @@ watchEffect(() => { if (props.slug) { const channelInfoBlock = document.getElementById("channel-content"); if (channelInfoBlock) { - channelInfoBlock.firstChild.insertAdjacentElement("afterend", channelContainer); + channelInfoBlock.firstElementChild?.insertAdjacentElement("afterend", channelContainer); } } }); diff --git a/src/site/kick.com/modules/auth/AuthModule.vue b/src/site/kick.com/modules/auth/AuthModule.vue index 2f1d19d9..8e3ddb6f 100644 --- a/src/site/kick.com/modules/auth/AuthModule.vue +++ b/src/site/kick.com/modules/auth/AuthModule.vue @@ -34,8 +34,8 @@ function updateSlug() { const observer = new MutationObserver((mutationList) => { for (const mutation of mutationList) { - for (const addedNode of mutation.addedNodes) { - if (addedNode.tagName == "TITLE") { + for (let i = 0; i < mutation.addedNodes.length; i++) { + if (mutation.addedNodes.item(i)?.nodeName == "TITLE") { updateSlug(); break; }