diff --git a/src/lib/components/Channel/Chat/DrawerRestream.svelte b/src/lib/components/Channel/Chat/DrawerRestream.svelte
index 1d749295..d5d645dc 100644
--- a/src/lib/components/Channel/Chat/DrawerRestream.svelte
+++ b/src/lib/components/Channel/Chat/DrawerRestream.svelte
@@ -7,6 +7,8 @@
import IconSocialTwitch from '$lib/assets/icons/social/IconSocialTwitch.svelte'
import IconSocialYouTube from '$lib/assets/icons/social/IconSocialYouTube.svelte'
+ export let channelId: string
+
$: auth = {
userId: $page.data.user?.userId,
token: $page.data.user?.token
@@ -80,7 +82,7 @@
})
const getLiveInput = async () => {
- return await get(`live-input?channelId=${$page.params.channelId}&trackType=rtmps`, {
+ return await get(`live-input?channelId=${channelId}&trackType=rtmps`, {
userId: $page.data.user?.userId,
token: $page.data.user?.token
})
@@ -122,17 +124,14 @@
)
const url = filteredIngests[0].url_template
const ingestUrl = url.substring(0, url.lastIndexOf('/'))
- const linkRes = await get(
- `twitch/link?channelId=${$page.params.channelId}&ingestUrl=${ingestUrl}`,
- auth
- )
+ const linkRes = await get(`twitch/link?channelId=${channelId}&ingestUrl=${ingestUrl}`, auth)
if (linkRes.redirect) window.location.replace(linkRes.redirectUrl)
} catch (err) {}
}
const linkYoutube = async () => {
try {
- const linkRes = await get(`youtube/link?channelId=${$page.params.channelId}`, auth)
+ const linkRes = await get(`youtube/link?channelId=${channelId}`, auth)
if (linkRes.redirect) window.location.replace(linkRes.redirectUrl)
} catch (error) {}
}
diff --git a/src/lib/components/Channel/Stream/StreamContainer.svelte b/src/lib/components/Channel/Stream/StreamContainer.svelte
index 7d14f095..d308a1e1 100644
--- a/src/lib/components/Channel/Stream/StreamContainer.svelte
+++ b/src/lib/components/Channel/Stream/StreamContainer.svelte
@@ -30,7 +30,8 @@
channel: any,
channels: any = [],
isHostOrGuest: boolean = false,
- viewers: any[] = []
+ viewers: any[] = [],
+ channelId: string
let isScrollable = false
$: isLive =
@@ -54,7 +55,7 @@
if (channels?.length && channels[channels.length - 2]?._id == id) {
dispatch('loadMore')
}
-
+ channelId = channel._id
goto(`${id}?${$page.url?.searchParams}`, {
keepFocus: true,
replaceState: true,
@@ -154,7 +155,7 @@
- {#if channel && nextchannel?._id === parseInt($page.params.channelId)}
+ {#if channel && nextchannel?._id === parseInt(channelId)}
{/if}
@@ -162,6 +163,6 @@
{/each}
-
+
diff --git a/src/lib/components/Channel/Stream/StreamControls.svelte b/src/lib/components/Channel/Stream/StreamControls.svelte
index 2689b40b..e96eeb1d 100644
--- a/src/lib/components/Channel/Stream/StreamControls.svelte
+++ b/src/lib/components/Channel/Stream/StreamControls.svelte
@@ -25,7 +25,8 @@
export let isHostOrGuest: boolean = false,
channel: any,
isScrollable: boolean = false,
- viewers: any[] = []
+ viewers: any[] = [],
+ channelId: string
let selectedUser = 0,
rtmps_modal: any = null,
@@ -41,7 +42,7 @@
)
$: isChannelSocketConnected =
- $channel_connection === `open-${$page.params.channelId}` && $page.data.user?.userId
+ $channel_connection === `open-${channelId}` && $page.data.user?.userId
$: videoItemIsActive = channel.videoItems.some(
(video: any) => video._id === $page.data.user?.userId
)
@@ -72,17 +73,17 @@
const startWebrtcStream = async (trackType: string) => {
let liveInput = await getLiveInput({
- channelId: parseInt($page.params.channelId),
+ channelId: parseInt(channelId),
trackType
})
if (!liveInput) {
liveInput = await createLiveInput({
- channelId: `${$page.params.channelId}`,
+ channelId: `${channelId}`,
userId: $page.data.user?.userId,
trackType,
liveInput: {
meta: {
- name: `${$page.params.channelId}-${$page.data.user.userId}-webrtc-${trackType}`
+ name: `${channelId}-${$page.data.user.userId}-webrtc-${trackType}`
},
recording: { mode: 'off' }
}
@@ -119,12 +120,12 @@
const refreshStreamKey = async () => {
rtmps = null
rtmps = await createLiveInput({
- channelId: `${$page.params.channelId}`,
+ channelId: `${channelId}`,
userId: $page.data.user?.userId,
trackType: 'rtmps',
liveInput: {
meta: {
- name: `${$page.params.channelId}-${$page.data.user.userId}-rtmps`
+ name: `${channelId}-${$page.data.user.userId}-rtmps`
},
recording: { mode: 'automatic' }
}
@@ -134,7 +135,7 @@
const showStreamKeyModal = async () => {
rtmps_modal.showModal()
rtmps = await getLiveInput({
- channelId: parseInt($page.params.channelId),
+ channelId: parseInt(channelId),
trackType: 'rtmps'
})
if (!rtmps) {
diff --git a/src/routes/channel/[channelId]/+page.svelte b/src/routes/channel/[channelId]/+page.svelte
index ae7d9b96..b67a8339 100644
--- a/src/routes/channel/[channelId]/+page.svelte
+++ b/src/routes/channel/[channelId]/+page.svelte
@@ -40,7 +40,7 @@
channel?.guests?.includes($page.data.user?.userId)
$: if (channel) {
- if (channel._id !== parseInt($page.params.channelId)) {
+ if (channel._id !== parseInt(channelId)) {
disableSharing()
handleWebsocket()
timeoutConnection()
@@ -48,6 +48,7 @@
}
$: isLive = channel?.videoItems?.some((input: any) => input?.rtmps?.isConnected) ?? false
+ $: channelId = $page.params.channelId
onMount(async () => {
clearInterval(platformPollingInterval)
@@ -61,10 +62,10 @@
}, 600)
channel_message.subscribe(async (value: any) => {
- if (!value || (channel && parseInt($page.params.channelId) !== channel._id)) return
+ if (!value || (channel && parseInt(channelId) !== channel._id)) return
var parsedMsg = JSON.parse(value)
switch (parsedMsg.eventName) {
- case `channel-update-${$page.params.channelId}`:
+ case `channel-update-${channelId}`:
console.log('channel-update', parsedMsg)
channel = {
...parsedMsg.channel,
@@ -94,7 +95,7 @@
}
}
break
- case `channel-subscribe-${$page.params.channelId}`:
+ case `channel-subscribe-${channelId}`:
userCount = parsedMsg.userCount
if (parsedMsg.quitUserId) {
channel.videoItems = channel.videoItems.filter(
@@ -115,18 +116,18 @@
})
} else {
// for new users joining the channel
- const liveInputs = await get(`live-inputs?channelId=${$page.params.channelId}`)
+ const liveInputs = await get(`live-inputs?channelId=${channelId}`)
channel.videoItems = updateVideoItems([...activeGuests], liveInputs)
}
}
}
break
- case `channel-streaming-action-${$page.params.channelId}`:
+ case `channel-streaming-action-${channelId}`:
if (channel) {
channel.videoItems = updateVideoItems(channel.videoItems, [parsedMsg.data.video])
}
break
- case `channel-get-sponsors-${$page.params.channelId}`:
+ case `channel-get-sponsors-${channelId}`:
if (channel) {
channel.sponsors = parsedMsg.sponsors
}
@@ -136,11 +137,15 @@
})
onDestroy(async () => {
+ channelId = ''
clearInterval(platformPollingInterval)
platformPollingInterval = null
disableSharing()
channels.forEach((ch: any) => {
- if (ch.socket && ch.socket.constructor === WebSocket) ch.socket.close()
+ if (ch.socket && ch.socket.constructor === WebSocket) {
+ console.log('got here----', ch.socket)
+ ch.socket.close()
+ }
})
})
@@ -153,7 +158,7 @@
}
const loadChannel = async () => {
- const chan = await get(`channel?channelId=${$page.params.channelId}`)
+ const chan = await get(`channel?channelId=${channelId}`)
chan.videoItems = []
const isOnboarded = await get(`plan/onboarded?userId=${chan.userId}`)
chan.isOnboarded = isOnboarded || false
@@ -163,7 +168,7 @@
}
const initChannel = (chan: any) => {
- $channel_connection = `open-${$page.params.channelId}`
+ $channel_connection = `open-${channelId}`
$channel_message = ''
chan.videoItems = []
clearInterval(platformPollingInterval)
@@ -171,14 +176,14 @@
if (chan.socket?.readyState === WebSocket.OPEN) {
emitChannelSubscribeByUser({
channelSocket: chan.socket,
- channelId: $page.params.channelId,
+ channelId: channelId,
hostId: chan.userId,
userId: $page.data.user?.userId,
username: $page.data.user?.user?.username
})
emitChatHistoryToChannel({
channelSocket: chan.socket,
- channelId: $page.params.channelId,
+ channelId: channelId,
limit: 100
})
platformPollingInterval = setInterval(async () => {
@@ -194,7 +199,7 @@
recipientUserId: chan.userId,
channelId: chan._id
})
- goto(`/channel/${$page.params.channelId}`, {
+ goto(`/channel/${channelId}`, {
replaceState: true
})
}
@@ -219,7 +224,7 @@
const handleWebsocket = async () => {
try {
- channel = channels.find((ch: any) => ch._id === parseInt($page.params.channelId))
+ channel = channels.find((ch: any) => ch._id === parseInt(channelId))
await insertChannelView(channel)
chatHistory = []
isHostOrGuest =
@@ -227,7 +232,7 @@
channel.guests?.includes($page.data.user?.userId)
let channelSocketId = ''
if (!channel.socket) {
- channelSocketId = await get(`wsinit/channelid?channelId=${$page.params.channelId}`)
+ channelSocketId = await get(`wsinit/channelid?channelId=${channelId}`)
if (channelSocketId) {
channel.socket = initChannelSocket({ websocketId: channelSocketId })
} else {
@@ -273,9 +278,9 @@
const attemptReconnect = () => {
setTimeout(async () => {
- if (!$page.params.channelId) return
+ if (!channelId) return
console.log('Reconnecting to WebSocket...')
- channel = channels.find((ch: any) => ch._id === parseInt($page.params.channelId))
+ channel = channels.find((ch: any) => ch._id === parseInt(channelId))
if (channel) {
channel.socket = null
await handleWebsocket()
@@ -284,9 +289,7 @@
}
const timeoutConnection = () => {
- const currentChannelIndex = channels.findIndex(
- (ch: any) => ch._id === parseInt($page.params.channelId)
- )
+ const currentChannelIndex = channels.findIndex((ch: any) => ch._id === parseInt(channelId))
channels.forEach((channel: any, index: number) => {
if (
Math.abs(index - currentChannelIndex) > 10 &&
@@ -303,13 +306,13 @@
}
const deleteChannelYesAction = async () => {
- await del(`channel?channelId=${$page.params.channelId}&bucketName=thumbnails`, {
+ await del(`channel?channelId=${channelId}&bucketName=thumbnails`, {
userId: $page.data.user?.userId,
token: $page.data.user?.token
})
emitDeleteAllMessagesToChannel({
channelSocket: channel.socket,
- channelId: $page.params.channelId
+ channelId: channelId
})
goto('/browse')
}
@@ -369,65 +372,69 @@
}
-{#if !$is_sharing_screen && !$is_sharing_webcam && !$is_sharing_audio && isHostOrGuest}
-
-{/if}
+{#key $page.url.pathname}
+ {#if !$is_sharing_screen && !$is_sharing_webcam && !$is_sharing_audio && isHostOrGuest}
+
+ {/if}
-{#if channel && channel._id === parseInt($page.params.channelId)}
-
-
-
+ {#if channel && channel._id === parseInt(channelId)}
+
+
+
- {#if showEditChannelDrawer}
-
- {/if}
-
- {#if !$is_chat_drawer_destroy}
-
-
-
-
-
-
-
+ {#if showEditChannelDrawer}
+
+ {/if}
+
+ {#if !$is_chat_drawer_destroy}
+
-
- {/if}
-
+ {/if}
+
-
-
- {#if $is_feature_premium_enabled}
-
+
+
+ {#if $is_feature_premium_enabled}
+
+ {/if}
{/if}
-{/if}
+{/key}