mirror of
https://github.com/bulwarkmail/native.git
synced 2026-10-31 08:06:36 +00:00
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { CAPABILITIES } from '../api/types';
|
|
import { useAuthStore } from '../stores/auth-store';
|
|
|
|
// When the session is null (cold start, offline restore) we assume features
|
|
// are available so they don't flicker off mid-restore. Once the live session
|
|
// arrives, the real capability set takes over.
|
|
function sessionHasCapability(capability: string): boolean {
|
|
const session = useAuthStore.getState().session;
|
|
if (!session) return true;
|
|
return capability in session.capabilities;
|
|
}
|
|
|
|
export function hasCalendarCapability(): boolean {
|
|
return sessionHasCapability(CAPABILITIES.CALENDARS);
|
|
}
|
|
|
|
export function hasContactsCapability(): boolean {
|
|
return sessionHasCapability(CAPABILITIES.CONTACTS);
|
|
}
|
|
|
|
export function hasFilesCapability(): boolean {
|
|
return sessionHasCapability(CAPABILITIES.FILES);
|
|
}
|
|
|
|
export function useHasCalendar(): boolean {
|
|
return useAuthStore((s) => (s.session ? CAPABILITIES.CALENDARS in s.session.capabilities : true));
|
|
}
|
|
|
|
export function useHasContacts(): boolean {
|
|
return useAuthStore((s) => (s.session ? CAPABILITIES.CONTACTS in s.session.capabilities : true));
|
|
}
|
|
|
|
export function useHasFiles(): boolean {
|
|
return useAuthStore((s) => (s.session ? CAPABILITIES.FILES in s.session.capabilities : true));
|
|
}
|