fix: queue store stability + persistence (#5909)
* fix: queue store stability + persistence * fix: lint * feat: set to draft btn * feat: migrate to indexed db rather than local storage for moderation checklist storage (keep session + perms alone) * fix: storage cleanup + lint * fix: invalidation fixes
This commit is contained in:
@@ -18,6 +18,7 @@ import { LabrinthBillingInternalModule } from './labrinth/billing/internal'
|
||||
import { LabrinthCollectionsModule } from './labrinth/collections'
|
||||
import { LabrinthGlobalsInternalModule } from './labrinth/globals/internal'
|
||||
import { LabrinthLimitsV3Module } from './labrinth/limits/v3'
|
||||
import { LabrinthModerationInternalModule } from './labrinth/moderation/internal'
|
||||
import { LabrinthNotificationsV2Module } from './labrinth/notifications/v2'
|
||||
import { LabrinthOAuthInternalModule } from './labrinth/oauth/internal'
|
||||
import { LabrinthOrganizationsV3Module } from './labrinth/organizations/v3'
|
||||
@@ -73,6 +74,7 @@ export const MODULE_REGISTRY = {
|
||||
labrinth_billing_internal: LabrinthBillingInternalModule,
|
||||
labrinth_collections: LabrinthCollectionsModule,
|
||||
labrinth_globals_internal: LabrinthGlobalsInternalModule,
|
||||
labrinth_moderation_internal: LabrinthModerationInternalModule,
|
||||
labrinth_notifications_v2: LabrinthNotificationsV2Module,
|
||||
labrinth_oauth_internal: LabrinthOAuthInternalModule,
|
||||
labrinth_organizations_v3: LabrinthOrganizationsV3Module,
|
||||
|
||||
@@ -4,6 +4,7 @@ export * from './billing/internal'
|
||||
export * from './collections'
|
||||
export * from './globals/internal'
|
||||
export * from './limits/v3'
|
||||
export * from './moderation/internal'
|
||||
export * from './notifications/v2'
|
||||
export * from './oauth/internal'
|
||||
export * from './organizations/v3'
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
import { AbstractModule } from '../../../core/abstract-module'
|
||||
import type { Labrinth } from '../types'
|
||||
|
||||
export class LabrinthModerationInternalModule extends AbstractModule {
|
||||
public getModuleID(): string {
|
||||
return 'labrinth_moderation_internal'
|
||||
}
|
||||
|
||||
public async acquireLock(
|
||||
projectId: string,
|
||||
): Promise<Labrinth.Moderation.Internal.LockAcquireResponse> {
|
||||
return this.client.request<Labrinth.Moderation.Internal.LockAcquireResponse>(
|
||||
`/moderation/lock/${projectId}`,
|
||||
{
|
||||
api: 'labrinth',
|
||||
version: 'internal',
|
||||
method: 'POST',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
public async overrideLock(
|
||||
projectId: string,
|
||||
): Promise<Labrinth.Moderation.Internal.LockAcquireResponse> {
|
||||
return this.client.request<Labrinth.Moderation.Internal.LockAcquireResponse>(
|
||||
`/moderation/lock/${projectId}/override`,
|
||||
{
|
||||
api: 'labrinth',
|
||||
version: 'internal',
|
||||
method: 'POST',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
public async releaseLock(
|
||||
projectId: string,
|
||||
): Promise<Labrinth.Moderation.Internal.ReleaseLockResponse> {
|
||||
return this.client.request<Labrinth.Moderation.Internal.ReleaseLockResponse>(
|
||||
`/moderation/lock/${projectId}`,
|
||||
{
|
||||
api: 'labrinth',
|
||||
version: 'internal',
|
||||
method: 'DELETE',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
public async checkLock(
|
||||
projectId: string,
|
||||
): Promise<Labrinth.Moderation.Internal.LockStatusResponse> {
|
||||
return this.client.request<Labrinth.Moderation.Internal.LockStatusResponse>(
|
||||
`/moderation/lock/${projectId}`,
|
||||
{
|
||||
api: 'labrinth',
|
||||
version: 'internal',
|
||||
method: 'GET',
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1301,6 +1301,38 @@ export namespace Labrinth {
|
||||
}
|
||||
}
|
||||
|
||||
export namespace Moderation {
|
||||
export namespace Internal {
|
||||
export type LockedByUser = {
|
||||
id: string
|
||||
username: string
|
||||
avatar_url?: string
|
||||
}
|
||||
|
||||
export type LockStatusResponse = {
|
||||
locked: boolean
|
||||
is_own_lock: boolean
|
||||
locked_by?: LockedByUser
|
||||
locked_at?: string
|
||||
expires_at?: string
|
||||
expired?: boolean
|
||||
}
|
||||
|
||||
export type LockAcquireResponse = {
|
||||
success: boolean
|
||||
is_own_lock: boolean
|
||||
locked_by?: LockedByUser
|
||||
locked_at?: string
|
||||
expires_at?: string
|
||||
expired?: boolean
|
||||
}
|
||||
|
||||
export type ReleaseLockResponse = {
|
||||
success: boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export namespace Notifications {
|
||||
export namespace v2 {
|
||||
export type NotificationAction = {
|
||||
|
||||
Reference in New Issue
Block a user