88 lines
1.9 KiB
TypeScript
88 lines
1.9 KiB
TypeScript
import type { RoleDefinition } from "./Roles";
|
|
|
|
export interface FolderData {
|
|
folderNumber: string;
|
|
name: string;
|
|
description: string;
|
|
created_at: string;
|
|
updated_at: string;
|
|
notes: string[];
|
|
messages: string[];
|
|
messages_owner: string[];
|
|
}
|
|
|
|
export function isFolderData(data: any): data is FolderData {
|
|
if (typeof data !== 'object' || data === null) return false;
|
|
|
|
const requiredStringFields = [
|
|
'folderNumber',
|
|
'name',
|
|
'description',
|
|
'created_at',
|
|
'updated_at'
|
|
];
|
|
|
|
for (const field of requiredStringFields) {
|
|
if (typeof data[field] !== 'string') return false;
|
|
}
|
|
|
|
// Vérifier que notes est un tableau de chaînes
|
|
if (!Array.isArray(data.notes) || !data.notes.every((item: any) => typeof item === 'string')) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
const emptyFolderData: FolderData = {
|
|
folderNumber: '',
|
|
name: '',
|
|
description: '',
|
|
created_at: '',
|
|
updated_at: '',
|
|
notes: [],
|
|
messages: [],
|
|
messages_owner: [],
|
|
};
|
|
|
|
const folderDataFields: string[] = Object.keys(emptyFolderData);
|
|
|
|
const FolderPublicFields: string[] = [];
|
|
|
|
// All the attributes are private in that case
|
|
export const FolderPrivateFields = [
|
|
...folderDataFields.filter(key => !FolderPublicFields.includes(key))
|
|
];
|
|
|
|
export interface FolderCreated {
|
|
processId: string,
|
|
process: any, // Process
|
|
data: FolderData,
|
|
}
|
|
|
|
export function setDefaultFolderRoles(ownerId: string): Record<string, RoleDefinition> {
|
|
return {
|
|
demiurge: {
|
|
members: [ownerId],
|
|
validation_rules: [],
|
|
storages: []
|
|
},
|
|
owner: {
|
|
members: [ownerId],
|
|
validation_rules: [
|
|
{
|
|
quorum: 0.5,
|
|
fields: [...folderDataFields, 'roles'],
|
|
min_sig_member: 1,
|
|
},
|
|
],
|
|
storages: ['https://dev2.4nkweb.com/storage']
|
|
},
|
|
apophis: {
|
|
members: [ownerId],
|
|
validation_rules: [],
|
|
storages: []
|
|
}
|
|
}
|
|
};
|