Ensure session cookies are updated before server navigation for both new and returning users. Co-authored-by: Moheeb Zara <[email protected]>
207 lines
4.4 KiB
TypeScript
207 lines
4.4 KiB
TypeScript
// Enum values match live DB exactly
|
|
export type MemberTier = 'plus' | 'basic' | 'associate'
|
|
export type MemberRole = 'admin' | 'board' | 'treasurer' | 'member' | 'associate'
|
|
export type MemberStatus = 'current' | 'late' | 'inactive' | 'unverified'
|
|
export type TaskType = 'chore' | 'task'
|
|
export type TaskStatus = 'open' | 'claimed' | 'in_progress' | 'overdue' | 'due_today' | 'completed' | 'done' | 'blocked'
|
|
export type TaskRecurrence = 'none' | 'daily' | 'weekly' | 'biweekly' | 'monthly'
|
|
export type ProjectStatus = 'backlog' | 'in_progress' | 'review' | 'done' | 'blocked'
|
|
export type KBVisibility = 'all_members' | 'board' | 'admin_only'
|
|
export type ContactType = 'vendor' | 'supplier' | 'partner' | 'landlord' | 'city'
|
|
export type PaymentPlatform = 'paypal' | 'zeffy' | 'venmo' | 'cash'
|
|
export type PaymentLinkStatus = 'linked' | 'unlinked'
|
|
export type ChannelType = 'general' | 'area' | 'ops' | 'project'
|
|
export type AreaLeadStatus = 'active' | 'vacant' | 'handoff'
|
|
|
|
export interface Space {
|
|
id: string
|
|
name: string
|
|
slug: string
|
|
city?: string
|
|
invite_code: string
|
|
require_approval: boolean
|
|
public_member_directory: boolean
|
|
webhook_secret?: string
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface SpaceMember {
|
|
id: string
|
|
space_id: string
|
|
user_id: string
|
|
display_name: string
|
|
handle?: string
|
|
email?: string
|
|
phone?: string
|
|
tier: MemberTier
|
|
role: MemberRole
|
|
status: MemberStatus
|
|
joined_at: string
|
|
approved: boolean
|
|
has_card_access: boolean
|
|
last_payment_at?: string
|
|
last_paid_at?: string
|
|
payment_status?: string
|
|
payment_note?: string
|
|
}
|
|
|
|
export interface Task {
|
|
id: string
|
|
space_id: string
|
|
task_type: TaskType
|
|
title: string
|
|
description?: string
|
|
status: TaskStatus
|
|
area?: string
|
|
assigned_to?: string
|
|
assigned_to_name?: string
|
|
claimed_by?: string
|
|
claimed_by_name?: string
|
|
requested_by?: string
|
|
requested_by_name?: string
|
|
due_date?: string
|
|
recurrence: TaskRecurrence
|
|
last_done_at?: string
|
|
subtask_completed?: number
|
|
subtask_total?: number
|
|
completed_at?: string
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface Project {
|
|
id: string
|
|
space_id: string
|
|
title: string
|
|
description?: string
|
|
status: ProjectStatus
|
|
area?: string
|
|
tags?: string[]
|
|
assignee_names?: string[]
|
|
task_count?: number
|
|
tasks_completed?: number
|
|
due_date?: string
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface KnowledgeBase {
|
|
id: string
|
|
space_id: string
|
|
title: string
|
|
content?: string
|
|
description?: string
|
|
area?: string
|
|
tags?: string[]
|
|
visibility: KBVisibility
|
|
access_level?: string
|
|
is_pinned: boolean
|
|
pinned?: boolean
|
|
icon?: string
|
|
updated_by_id?: string
|
|
updated_by_name?: string
|
|
updated_by?: string
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface Secret {
|
|
id: string
|
|
space_id: string
|
|
title: string
|
|
description?: string
|
|
value: string
|
|
area?: string
|
|
icon?: string
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface AreaLead {
|
|
id: string
|
|
space_id: string
|
|
area_code: string
|
|
area_name: string
|
|
lead_id?: string
|
|
lead_handle?: string
|
|
status: AreaLeadStatus
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface Contact {
|
|
id: string
|
|
space_id: string
|
|
contact_type: ContactType
|
|
code: string
|
|
name: string
|
|
email?: string
|
|
phone?: string
|
|
details?: string
|
|
tags?: string[]
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface Payment {
|
|
id: string
|
|
space_id: string
|
|
platform: PaymentPlatform
|
|
amount: number
|
|
from_identifier: string
|
|
from_note?: string
|
|
member_id?: string
|
|
member_name?: string
|
|
link_status: PaymentLinkStatus
|
|
transaction_date: string
|
|
created_at: string
|
|
}
|
|
|
|
export interface CommsChannel {
|
|
id: string
|
|
space_id: string
|
|
name: string
|
|
channel_type: ChannelType
|
|
icon?: string
|
|
area_reference?: string
|
|
project_id?: string
|
|
member_count?: number
|
|
created_at: string
|
|
}
|
|
|
|
export interface CommsMessage {
|
|
id: string
|
|
space_id: string
|
|
channel_id: string
|
|
user_id: string
|
|
display_name: string
|
|
handle?: string
|
|
content: string
|
|
created_at: string
|
|
}
|
|
|
|
export interface Integration {
|
|
id: string
|
|
space_id: string
|
|
platform: string
|
|
name: string
|
|
description?: string
|
|
is_connected: boolean
|
|
config?: any
|
|
created_at: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface ActivityLog {
|
|
id: string
|
|
space_id: string
|
|
user_id: string
|
|
display_name: string
|
|
action: string
|
|
entity_type: string
|
|
entity_id: string
|
|
details?: string
|
|
created_at: string
|
|
}
|