Add landlubber link if user is admin
This commit is contained in:
parent
2d89ca6c0e
commit
5c5c130700
2 changed files with 23 additions and 1 deletions
|
|
@ -12,6 +12,7 @@
|
||||||
import Letter from "@assets/icons/letter.svg?dataurl"
|
import Letter from "@assets/icons/letter.svg?dataurl"
|
||||||
import Login from "@assets/icons/login-3.svg?dataurl"
|
import Login from "@assets/icons/login-3.svg?dataurl"
|
||||||
import History from "@assets/icons/history.svg?dataurl"
|
import History from "@assets/icons/history.svg?dataurl"
|
||||||
|
import Tuning2 from "@assets/icons/tuning-2.svg?dataurl"
|
||||||
import StarFallMinimalistic from "@assets/icons/star-fall-minimalistic-2.svg?dataurl"
|
import StarFallMinimalistic from "@assets/icons/star-fall-minimalistic-2.svg?dataurl"
|
||||||
import NotesMinimalistic from "@assets/icons/notes-minimalistic.svg?dataurl"
|
import NotesMinimalistic from "@assets/icons/notes-minimalistic.svg?dataurl"
|
||||||
import CalendarMinimalistic from "@assets/icons/calendar-minimalistic.svg?dataurl"
|
import CalendarMinimalistic from "@assets/icons/calendar-minimalistic.svg?dataurl"
|
||||||
|
|
@ -47,6 +48,7 @@
|
||||||
hasNip29,
|
hasNip29,
|
||||||
alerts,
|
alerts,
|
||||||
deriveUserCanCreateRoom,
|
deriveUserCanCreateRoom,
|
||||||
|
deriveUserIsSpaceAdmin,
|
||||||
} from "@app/core/state"
|
} from "@app/core/state"
|
||||||
import {notifications} from "@app/util/notifications"
|
import {notifications} from "@app/util/notifications"
|
||||||
import {pushModal} from "@app/util/modal"
|
import {pushModal} from "@app/util/modal"
|
||||||
|
|
@ -63,6 +65,7 @@
|
||||||
const otherRooms = deriveOtherRooms(url)
|
const otherRooms = deriveOtherRooms(url)
|
||||||
const members = deriveSpaceMembers(url)
|
const members = deriveSpaceMembers(url)
|
||||||
const hasAlerts = $derived($alerts.some(a => getTagValue("feed", a.tags)?.includes(url)))
|
const hasAlerts = $derived($alerts.some(a => getTagValue("feed", a.tags)?.includes(url)))
|
||||||
|
const userIsAdmin = deriveUserIsSpaceAdmin(url)
|
||||||
|
|
||||||
const spaceKinds = derived(
|
const spaceKinds = derived(
|
||||||
deriveEventsForUrl(url, [{kinds: CONTENT_KINDS}]),
|
deriveEventsForUrl(url, [{kinds: CONTENT_KINDS}]),
|
||||||
|
|
@ -149,7 +152,14 @@
|
||||||
View Members ({$members.length})
|
View Members ({$members.length})
|
||||||
</Button>
|
</Button>
|
||||||
</li>
|
</li>
|
||||||
{#if $relay?.pubkey}
|
{#if $userIsAdmin}
|
||||||
|
<li>
|
||||||
|
<Link external href="https://landlubber.coracle.social">
|
||||||
|
<Icon icon={Tuning2} />
|
||||||
|
Manage Space
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
{:else if $relay?.pubkey}
|
||||||
<li>
|
<li>
|
||||||
<Link href={makeChatPath([$relay.pubkey])}>
|
<Link href={makeChatPath([$relay.pubkey])}>
|
||||||
<Icon icon={Letter} />
|
<Icon icon={Letter} />
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ import {
|
||||||
verifyEvent,
|
verifyEvent,
|
||||||
readRoomMeta,
|
readRoomMeta,
|
||||||
makeRoomMeta,
|
makeRoomMeta,
|
||||||
|
ManagementMethod,
|
||||||
} from "@welshman/util"
|
} from "@welshman/util"
|
||||||
import type {
|
import type {
|
||||||
TrustedEvent,
|
TrustedEvent,
|
||||||
|
|
@ -126,6 +127,7 @@ import {
|
||||||
deriveRelay,
|
deriveRelay,
|
||||||
makeUserData,
|
makeUserData,
|
||||||
makeUserLoader,
|
makeUserLoader,
|
||||||
|
manageRelay,
|
||||||
} from "@welshman/app"
|
} from "@welshman/app"
|
||||||
import type {Thunk} from "@welshman/app"
|
import type {Thunk} from "@welshman/app"
|
||||||
|
|
||||||
|
|
@ -873,6 +875,16 @@ export const deriveUserCanCreateRoom = (url: string) =>
|
||||||
export const deriveUserIsRoomAdmin = (url: string, h: string) =>
|
export const deriveUserIsRoomAdmin = (url: string, h: string) =>
|
||||||
derived([pubkey, deriveRoomAdmins(url, h)], ([$pubkey, $admins]) => $admins.includes($pubkey!))
|
derived([pubkey, deriveRoomAdmins(url, h)], ([$pubkey, $admins]) => $admins.includes($pubkey!))
|
||||||
|
|
||||||
|
export const deriveUserIsSpaceAdmin = (url: string) => {
|
||||||
|
const store = writable(false)
|
||||||
|
|
||||||
|
manageRelay(url, {method: ManagementMethod.SupportedMethods, params: []}).then(res =>
|
||||||
|
store.set(Boolean(res.result?.length)),
|
||||||
|
)
|
||||||
|
|
||||||
|
return store
|
||||||
|
}
|
||||||
|
|
||||||
// Other utils
|
// Other utils
|
||||||
|
|
||||||
export const encodeRelay = (url: string) =>
|
export const encodeRelay = (url: string) =>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue