internal: incomplete vault systems behind feature flag (#2340)

This commit is contained in:
Mo
2023-06-30 09:01:56 -05:00
committed by GitHub
parent d16e401bb9
commit b032eb9c9b
638 changed files with 20321 additions and 4813 deletions

View File

@@ -4,4 +4,5 @@ export enum ApiEndpointParam {
SyncDlLimit = 'limit',
SyncPayloads = 'items',
ApiVersion = 'api',
SharedVaultUuids = 'shared_vault_uuids',
}

View File

@@ -1,11 +1,98 @@
import { ConflictType } from './ConflictType'
import { ServerItemResponse } from './ServerItemResponse'
export type ConflictParams = {
type BaseConflictParams<T = ServerItemResponse> = {
type: ConflictType
server_item?: ServerItemResponse
unsaved_item?: ServerItemResponse
/** @legacay */
item?: ServerItemResponse
server_item?: T
unsaved_item?: T
}
export type ConflictParamsWithServerItem<T = ServerItemResponse> = BaseConflictParams<T> & {
server_item: T
unsaved_item: never
}
export type ConflictParamsWithUnsavedItem<T = ServerItemResponse> = BaseConflictParams<T> & {
unsaved_item: T
server_item: never
}
export type ConflictParamsWithServerAndUnsavedItem<T = ServerItemResponse> = BaseConflictParams<T> & {
server_item: T
unsaved_item: T
}
export type ConflictConflictingDataParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.ConflictingData
server_item: T
unsaved_item: never
}
export type ConflictUuidConflictParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.UuidConflict
server_item: never
unsaved_item: T
}
export type ConflictContentTypeErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.ContentTypeError
server_item: never
unsaved_item: T
}
export type ConflictContentErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.ContentError
server_item: never
unsaved_item: T
}
export type ConflictReadOnlyErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.ReadOnlyError
server_item: T
unsaved_item: T
}
export type ConflictUuidErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.UuidError
server_item: never
unsaved_item: T
}
export type ConflictSharedVaultNotMemberErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.SharedVaultNotMemberError
server_item: never
unsaved_item: T
}
export type ConflictSharedVaultInsufficientPermissionsErrorParams<T = ServerItemResponse> = BaseConflictParams<T> & {
type: ConflictType.SharedVaultInsufficientPermissionsError
unsaved_item: T
}
export function conflictParamsHasServerItemAndUnsavedItem<T = ServerItemResponse>(
params: BaseConflictParams<T>,
): params is ConflictParamsWithServerAndUnsavedItem<T> {
return params.server_item !== undefined && params.unsaved_item !== undefined
}
export function conflictParamsHasOnlyServerItem<T = ServerItemResponse>(
params: BaseConflictParams<T>,
): params is ConflictParamsWithServerItem<T> {
return params.server_item !== undefined
}
export function conflictParamsHasOnlyUnsavedItem<T = ServerItemResponse>(
params: BaseConflictParams<T>,
): params is ConflictParamsWithUnsavedItem<T> {
return params.unsaved_item !== undefined
}
export type ConflictParams<T = ServerItemResponse> =
| ConflictConflictingDataParams<T>
| ConflictUuidConflictParams<T>
| ConflictContentTypeErrorParams<T>
| ConflictContentErrorParams<T>
| ConflictReadOnlyErrorParams<T>
| ConflictUuidErrorParams<T>
| ConflictSharedVaultNotMemberErrorParams<T>
| ConflictSharedVaultInsufficientPermissionsErrorParams<T>

View File

@@ -5,5 +5,9 @@ export enum ConflictType {
ContentError = 'content_error',
ReadOnlyError = 'readonly_error',
UuidError = 'uuid_error',
SyncError = 'sync_error',
SharedVaultSnjsVersionError = 'shared_vault_snjs_version_error',
SharedVaultInsufficientPermissionsError = 'shared_vault_insufficient_permissions_error',
SharedVaultNotMemberError = 'shared_vault_not_member_error',
SharedVaultInvalidState = 'shared_vault_invalid_state',
}

View File

@@ -1,6 +1,10 @@
import { SharedVaultInviteServerHash } from '../SharedVaults/SharedVaultInviteServerHash'
import { ApiEndpointParam } from './ApiEndpointParam'
import { ConflictParams } from './ConflictParams'
import { ServerItemResponse } from './ServerItemResponse'
import { SharedVaultServerHash } from '../SharedVaults/SharedVaultServerHash'
import { UserEventServerHash } from '../UserEvent/UserEventServerHash'
import { AsymmetricMessageServerHash } from '../AsymmetricMessage/AsymmetricMessageServerHash'
export type RawSyncData = {
error?: unknown
@@ -10,5 +14,9 @@ export type RawSyncData = {
saved_items?: ServerItemResponse[]
conflicts?: ConflictParams[]
unsaved?: ConflictParams[]
shared_vaults?: SharedVaultServerHash[]
shared_vault_invites?: SharedVaultInviteServerHash[]
user_events?: UserEventServerHash[]
asymmetric_messages?: AsymmetricMessageServerHash[]
status?: number
}

View File

@@ -12,4 +12,8 @@ export interface ServerItemResponse {
updated_at_timestamp: number
updated_at: Date
uuid: string
user_uuid: string
shared_vault_uuid: string | undefined
key_system_identifier: string | undefined
last_edited_by_uuid?: string
}