Implement endorsements for group send

This commit is contained in:
Jamie Kyle 2024-09-06 10:52:19 -07:00 committed by GitHub
parent 5f82c82803
commit 24536e1342
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 816 additions and 269 deletions

View file

@ -73,7 +73,26 @@ export const groupSendMemberEndorsementSchema = z.object({
endorsement: groupSendEndorsementSchema,
});
export const groupSendEndorsementsDataSchema = z.object({
combinedEndorsement: groupSendCombinedEndorsementSchema,
memberEndorsements: z.array(groupSendMemberEndorsementSchema).min(1),
});
export const groupSendEndorsementsDataSchema = z
.object({
combinedEndorsement: groupSendCombinedEndorsementSchema,
memberEndorsements: z.array(groupSendMemberEndorsementSchema).min(1),
})
.refine(data => {
return data.memberEndorsements.every(memberEndorsement => {
return (
memberEndorsement.groupId === data.combinedEndorsement.groupId &&
memberEndorsement.expiration === data.combinedEndorsement.expiration
);
});
});
export const groupSendTokenSchema = z
.instanceof(Uint8Array)
.brand('GroupSendToken');
export type GroupSendToken = z.infer<typeof groupSendTokenSchema>;
export function toGroupSendToken(token: Uint8Array): GroupSendToken {
return groupSendTokenSchema.parse(token);
}

View file

@ -33,6 +33,7 @@ export enum ToastType {
FailedToDeleteUsername = 'FailedToDeleteUsername',
FailedToFetchPhoneNumber = 'FailedToFetchPhoneNumber',
FailedToFetchUsername = 'FailedToFetchUsername',
FailedToSendWithEndorsements = 'FailedToSendWithEndorsements',
FileSaved = 'FileSaved',
FileSize = 'FileSize',
GroupLinkCopied = 'GroupLinkCopied',
@ -105,6 +106,7 @@ export type AnyToast =
| { toastType: ToastType.FailedToDeleteUsername }
| { toastType: ToastType.FailedToFetchPhoneNumber }
| { toastType: ToastType.FailedToFetchUsername }
| { toastType: ToastType.FailedToSendWithEndorsements }
| { toastType: ToastType.FileSaved; parameters: { fullPath: string } }
| {
toastType: ToastType.FileSize;