Remove client-side isLoggedIn value
[ProtonMail-WebClient.git] / packages / docs-core / lib / Models / DecryptedCommit.ts
blobe18828f5ce7966bd8bb5597f842ad246d8e2a090
1 import type { DecryptedMessage } from '@proton/docs-shared'
2 import { GetCommitDULimit } from '../Types/SquashingConstants'
3 import { mergeUpdates } from 'yjs'
5 export class DecryptedCommit {
6   public readonly byteSize: number
8   constructor(
9     public commitId: string,
10     public updates: DecryptedMessage[],
11   ) {
12     this.byteSize = updates.reduce((acc, update) => acc + update.byteSize(), 0)
14     Object.freeze(this)
15   }
17   numberOfUpdates(): number {
18     return this.updates.length
19   }
21   needsSquash(): boolean {
22     return this.numberOfUpdates() > GetCommitDULimit()
23   }
25   squashedRepresentation(): Uint8Array {
26     try {
27       const merged = mergeUpdates(this.updates.map((update) => update.content))
28       return merged
29     } catch (error) {
30       throw new Error(`Failed to merge updates: ${error}`)
31     }
32   }