Skip to content

Commit

Permalink
refactor: enhance type generics and store method signatures
Browse files Browse the repository at this point in the history
- Add generic type parameter to decodeRecords utility function
- Refactor status retrieval methods across modals and pages
- Simplify organization status link and history retrieval methods
  • Loading branch information
Soushi888 committed Dec 30, 2024
1 parent 0e5f807 commit f714c73
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 35 deletions.
2 changes: 1 addition & 1 deletion ui/src/lib/ActionBar.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
entity.original_action_hash,
entityType
);
userStatus = statusRecord ? decodeRecords([statusRecord])[0] : null;
userStatus = statusRecord ? decodeRecords<StatusInDHT>([statusRecord])[0] : null;
}
}
Expand Down
4 changes: 2 additions & 2 deletions ui/src/lib/modals/OrganizationDetailsModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import ActionBar from '../ActionBar.svelte';
import type { UIOrganization, UIStatus } from '@/types/ui';
import administrationStore from '@/stores/administration.store.svelte';
import { AdministrationEntity } from '@/types/holochain';
import { AdministrationEntity, type StatusInDHT } from '@/types/holochain';
import { decodeRecords } from '@/utils';
const modalStore = getModalStore();
Expand All @@ -27,7 +27,7 @@
AdministrationEntity.Organizations
)
.then((record) => {
organizationStatus = record ? decodeRecords([record])[0] : null;
organizationStatus = record ? decodeRecords<StatusInDHT>([record])[0] : null;
});
}
});
Expand Down
4 changes: 2 additions & 2 deletions ui/src/lib/modals/UserDetailsModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import ActionBar from '../ActionBar.svelte';
import type { UIUser, UIStatus } from '@/types/ui';
import administrationStore from '@/stores/administration.store.svelte';
import { AdministrationEntity } from '@/types/holochain';
import { AdministrationEntity, type StatusInDHT } from '@/types/holochain';
import { decodeRecords } from '@/utils';
type Props = {
Expand All @@ -32,7 +32,7 @@
user.original_action_hash!,
AdministrationEntity.Users
);
userStatus = userStatusRecord ? decodeRecords([userStatusRecord])[0] : null;
userStatus = userStatusRecord ? decodeRecords<StatusInDHT>([userStatusRecord])[0] : null;
if (userStatus?.suspended_until) {
suspensionDate = new Date(userStatus.suspended_until).toLocaleString();
Expand Down
15 changes: 5 additions & 10 deletions ui/src/routes/(app)/organizations/[id]/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,8 @@
try {
loading = true;
const statusLink = await administrationStore.getEntityStatusLink(
organization.original_action_hash,
AdministrationEntity.Organizations
const statusLink = await organizationsStore.getOrganizationStatusLink(
organization.original_action_hash
);
if (!statusLink) {
Expand Down Expand Up @@ -174,16 +173,12 @@
async function handleStatusHistoryModal() {
try {
const statusLink = await administrationStore.getEntityStatusLink(
organization!.original_action_hash!,
AdministrationEntity.Organizations
const statusLink = await organizationsStore.getOrganizationStatusLink(
organization!.original_action_hash!
);
if (!statusLink) return;
const statusHistory = await administrationStore.getAllRevisionsForStatus(
organization!,
statusLink.target
);
const statusHistory = await administrationStore.getAllRevisionsForStatus(organization!);
console.log('statusHistory:', statusHistory);
Expand Down
8 changes: 4 additions & 4 deletions ui/src/stores/administration.store.svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class AdministrationStore {
if (!status) continue;

user.status = {
...decodeRecords([status])[0],
...decodeRecords<UIStatus>([status])[0],
original_action_hash: statusLink.target,
previous_action_hash: status.signed_action.hashed.hash
};
Expand Down Expand Up @@ -267,7 +267,7 @@ class AdministrationStore {
const latestStatus = await AdministrationService.getLatestStatusRecord(statusLink.target);
if (!latestStatus) return null;

const status = this.convertToUIStatus(decodeRecords([latestStatus])[0]);
const status = this.convertToUIStatus(decodeRecords<StatusInDHT>([latestStatus])[0]);
status.original_action_hash = statusLink.target;
status.previous_action_hash = latestStatus.signed_action.hashed.hash;

Expand Down Expand Up @@ -334,7 +334,7 @@ class AdministrationStore {
);

const status = {
...decodeRecords([record])[0],
...decodeRecords<StatusInDHT>([record])[0],
original_action_hash: status_original_action_hash,
previous_action_hash: record.signed_action.hashed.hash
};
Expand Down Expand Up @@ -409,7 +409,7 @@ class AdministrationStore {
);

const status = {
...decodeRecords([record])[0],
...decodeRecords<StatusInDHT>([record])[0],
original_action_hash: status_original_action_hash,
previous_action_hash: record.signed_action.hashed.hash
};
Expand Down
13 changes: 5 additions & 8 deletions ui/src/stores/organizations.store.svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ class OrganizationsStore {

async createOrganization(organization: OrganizationInDHT): Promise<Record> {
const record = await OrganizationsService.createOrganization(organization);
const newOrganization: UIOrganization = {
...decodeRecords([record])[0],
const newOrganization = {
...decodeRecords<OrganizationInDHT>([record])[0],
original_action_hash: record.signed_action.hashed.hash,
previous_action_hash: record.signed_action.hashed.hash,
members: [],
Expand All @@ -33,7 +33,7 @@ class OrganizationsStore {
if (!record) throw new Error('Organization not found');

const organization: UIOrganization = {
...decodeRecords([record])[0],
...decodeRecords<OrganizationInDHT>([record])[0],
original_action_hash: record.signed_action.hashed.hash,
previous_action_hash: record.signed_action.hashed.hash,
members: [],
Expand Down Expand Up @@ -233,10 +233,7 @@ class OrganizationsStore {
}

async getOrganizationStatusLink(original_action_hash: ActionHash) {
return await administrationStore.getEntityStatusLink(
original_action_hash,
AdministrationEntity.Organizations
);
return await OrganizationsService.getOrganizationStatusLink(original_action_hash);
}

async updateOrganization(
Expand All @@ -249,7 +246,7 @@ class OrganizationsStore {
throw new Error('Organization not found');
}

const currentEntry = decodeRecords([currentOrg])[0] as OrganizationInDHT;
const currentEntry = decodeRecords<OrganizationInDHT>([currentOrg])[0];

// Create the update input with all required fields
const input = {
Expand Down
10 changes: 5 additions & 5 deletions ui/src/stores/users.store.svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class UsersStore {

async createUser(user: UserInDHT): Promise<UIUser> {
const record = await UsersService.createUser(user);
const newUser: UIUser = {
...decodeRecords([record])[0],
const newUser = {
...decodeRecords<UserInDHT>([record])[0],
original_action_hash: record.signed_action.hashed.hash,
previous_action_hash: record.signed_action.hashed.hash
};
Expand All @@ -27,7 +27,7 @@ class UsersStore {
if (!record) return null;

return {
...decodeRecords([record])[0],
...decodeRecords<UserInDHT>([record])[0],
original_action_hash: original_action_hash,
previous_action_hash: record.signed_action.hashed.hash
};
Expand Down Expand Up @@ -62,7 +62,7 @@ class UsersStore {
if (!status) return null;

this.currentUser = {
...decodeRecords([userRecord])[0],
...decodeRecords<UserInDHT>([userRecord])[0],
status: status,
original_action_hash: links[0].target,
previous_action_hash: userRecord.signed_action.hashed.hash
Expand Down Expand Up @@ -90,7 +90,7 @@ class UsersStore {
);

const updatedUser: UIUser = {
...decodeRecords([record])[0],
...decodeRecords<UserInDHT>([record])[0],
status: this.currentUser?.status,
original_action_hash: userOriginalActionHash,
previous_action_hash: record.signed_action.hashed.hash
Expand Down
6 changes: 3 additions & 3 deletions ui/src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import { type ModalSettings, type ModalStore } from '@skeletonlabs/skeleton';
/**
* Decodes the outputs from the records.
* @param {Record[]} records - The records to decode.
* @returns {unknown[]} - The decoded outputs.
* @returns {T[]} - The decoded outputs.
*/
export function decodeRecords(records: Record[]): any[] {
return records.map((r) => decode((r.entry as any).Present.entry));
export function decodeRecords<T>(records: Record[]): T[] {
return records.map((r) => decode((r.entry as any).Present.entry)) as T[];
}

/**
Expand Down

0 comments on commit f714c73

Please sign in to comment.