2024-11-14 18:53:13 +00:00
|
|
|
<script lang="ts">
|
|
|
|
|
import Icon from "@lib/components/Icon.svelte"
|
|
|
|
|
import SecondaryNavItem from "@lib/components/SecondaryNavItem.svelte"
|
2024-12-10 01:04:39 +00:00
|
|
|
import ChannelName from "@app/components/ChannelName.svelte"
|
2024-12-17 02:59:16 +00:00
|
|
|
import {makeRoomPath} from "@app/routes"
|
2024-12-10 21:38:34 +00:00
|
|
|
import {deriveChannel, channelIsLocked} from "@app/state"
|
2024-12-16 19:24:10 +00:00
|
|
|
import {notifications} from "@app/notifications"
|
2024-11-14 18:53:13 +00:00
|
|
|
|
2025-02-04 00:37:14 +00:00
|
|
|
interface Props {
|
|
|
|
|
url: any
|
|
|
|
|
room: any
|
|
|
|
|
notify?: boolean
|
2025-02-11 19:42:49 +00:00
|
|
|
replaceState?: boolean
|
2025-02-04 00:37:14 +00:00
|
|
|
}
|
|
|
|
|
|
2025-02-11 19:42:49 +00:00
|
|
|
const {url, room, notify = false, replaceState = false}: Props = $props()
|
2024-11-14 18:53:13 +00:00
|
|
|
|
2024-12-17 02:59:16 +00:00
|
|
|
const path = makeRoomPath(url, room)
|
2024-12-10 21:38:34 +00:00
|
|
|
const channel = deriveChannel(url, room)
|
2024-11-14 18:53:13 +00:00
|
|
|
</script>
|
|
|
|
|
|
2025-02-11 19:42:49 +00:00
|
|
|
<SecondaryNavItem
|
|
|
|
|
href={path}
|
|
|
|
|
{replaceState}
|
|
|
|
|
notification={notify ? $notifications.has(path) : false}>
|
2024-12-10 21:38:34 +00:00
|
|
|
{#if channelIsLocked($channel)}
|
|
|
|
|
<Icon icon="lock" size={4} />
|
|
|
|
|
{:else}
|
|
|
|
|
<Icon icon="hashtag" />
|
|
|
|
|
{/if}
|
2024-12-10 21:02:41 +00:00
|
|
|
<div class="min-w-0 overflow-hidden text-ellipsis">
|
|
|
|
|
<ChannelName {url} {room} />
|
|
|
|
|
</div>
|
2024-11-14 18:53:13 +00:00
|
|
|
</SecondaryNavItem>
|