Pickle Systems
connectionsLogin
Kick
/Connections/Kick
connectionsLogin

Admin view

This surface is designed for hub owners and members. Admins can audit connections from Admin pages.
async ({ sess, ctx }) => { const db = ctx?.db; const tid = String(sess?.tenantId || 'default'); const enabledChannels = (await db.listEnabledChannels('kick', tid)) || []; const uid = String(sess?.userId || ''); const kickOauthLogin = String(await db.tenantKvGet(tid, 'kick.oauth_login') || '').trim(); const kickOauthUserId = String(await db.tenantKvGet(tid, 'kick.oauth_user_id') || '').trim(); const platformEnabled = !!cfg.kickEnabled; const oauthConfigured = !!(cfg.kickClientId && cfg.kickClientSecret); let kickTenantOauth = null; try { kickTenantOauth = await ctx?.kick?.getTenantOauthForRuntime?.(tid); } catch {} const runtimeKickLogin = String(kickTenantOauth?.login || '').trim(); const runtimeKickUserId = String(kickTenantOauth?.userId || '').trim(); const runtimeKickConnected = !!String(kickTenantOauth?.accessToken || '').trim() && String(kickTenantOauth?.source || '') === 'account'; const kickLinkedIdentityCountRow = uid ? await ctx?.storage?.users?.countProviderIdentities(uid, ['kick']) : null; const kickLinkedIdentityCount = Number(kickLinkedIdentityCountRow?.n || 0); const kickLinkedIdentityRow = uid ? await ctx?.storage?.users?.getLinkedIdentityLogin(uid, 'kick') : null; const linkedKickLogin = String(kickLinkedIdentityRow?.login || '').trim(); const resolvedKickLogin = String(kickOauthLogin || runtimeKickLogin || linkedKickLogin || '').trim(); const accountLinked = !!(resolvedKickLogin || kickOauthUserId || runtimeKickUserId || runtimeKickConnected || kickLinkedIdentityCount > 0); const stateLabel = accountLinked ? 'Connected' : (oauthConfigured ? 'Ready to connect' : 'Not available yet'); const stateHelp = accountLinked ? (resolvedKickLogin ? 'Your Kick account is linked and ready to use.' : 'Your Kick account is linked. The channel name is still syncing.') : (oauthConfigured ? 'Connect your Kick account to use it in Channel Dashboard.' : 'Kick sign-in is not available yet.'); const connectedChannelName = resolvedKickLogin || enabledChannels[0] || (accountLinked ? 'Connected account' : '—'); const connectedChannelHelp = resolvedKickLogin ? 'This is the Kick account currently linked to Pickle Systems.' : accountLinked ? 'Kick is linked on this account, but the channel name has not synced yet. Reconnect or refresh if it stays blank.' : enabledChannels.length ? 'This Kick channel was saved earlier on this account.' : 'No Kick channel is connected yet.'; const kickFlashHtml = readKickFlash(req?.query || {}); return `
${kickFlashHtml}
Channel connections

Kick

Connect Kick here. Then turn the channel on in Channel Dashboard.
${oauthConfigured ? `${accountLinked ? 'Reconnect Kick account' : 'Connect Kick account'}` : ''} ${accountLinked ? `
` : ''} ${accountLinked ? `
` : ''} Open Channel Dashboard
Status
${esc(stateLabel)}
${esc(stateHelp)}
Linked Kick identities
${kickLinkedIdentityCount || (accountLinked ? 1 : 0)}
Kick accounts linked to this Pickle Systems account.
Connected channel name
${esc(connectedChannelName)}
${esc(connectedChannelHelp)}
`; }