Skip to content

Commit

Permalink
Merge pull request #61 from ATOR-Development/leggo/phase-1/dev
Browse files Browse the repository at this point in the history
Leggo/phase 1/dev
  • Loading branch information
SuchJitter committed Aug 18, 2024
2 parents d70664b + e51883c commit 3490431
Show file tree
Hide file tree
Showing 15 changed files with 1,249 additions and 29 deletions.
27 changes: 27 additions & 0 deletions components/DataTableMyRelays/DataTableMyRelays.vue
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,29 @@ const ethAddressError = ref<string | null>(null);
const fingerPrintRegister = ref<string>('');
const fingerPrintRegisterError = ref<string | null>(null);
const relayCredits = ref<Record<string, boolean | undefined>>({});
const familyVerified = ref<Record<string, boolean>>({});
const registrationCreditsRequired = ref<boolean>(true);
const familyRequired = ref<boolean>(true);
const fetchRegistrationCredit = async () => {
if (allRelays.value) {
for (const relay of filterUniqueRelays(allRelays.value)) {
relayCredits.value[relay.fingerprint] =
await userStore.hasRegistrationCredit(relay.fingerprint);
familyVerified.value[relay.fingerprint] = await userStore.familyVerified2(
relay.fingerprint
);
}
}
registrationCreditsRequired.value = userStore.registrationCreditsRequired;
familyRequired.value = userStore.familyRequired;
};
// Fetch the registration credits when the relays are loaded
watch(allRelays, fetchRegistrationCredit);
if ((allRelaysError as any).value?.cause?.message == 'rate limited') {
toast.add({
id: 'claimable-relays-error',
Expand Down Expand Up @@ -553,6 +576,10 @@ const handleUnlockClick = async (fingerprint: string) => {
userStore.isHardwareRelay(row.fingerprint)
"
:is-loading="registratorStore.loading"
:has-registration-credit="relayCredits[row.fingerprint]"
:registration-credits-required="registrationCreditsRequired"
:family-verified="familyVerified[row.fingerprint]"
:family-required="familyRequired"
/>
</template>
<template #unlock-data="{ row }">
Expand Down
30 changes: 30 additions & 0 deletions components/DataTableMyRelays/DataTableMyRelaysMobile.vue
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,13 @@ onMounted(() => {
}, 1000 * 60);
});
// watch for all relays change and update the relay credits
const unwatch = watchAccount(config, {
onChange(account) {
// account change
userStore.createRelayCache();
fetchRegistrationCredit();
},
});
unwatch();
Expand Down Expand Up @@ -87,6 +90,29 @@ const ethAddressError = ref<string | null>(null);
const fingerPrintRegister = ref<string>('');
const fingerPrintRegisterError = ref<string | null>(null);
const relayCredits = ref<Record<string, boolean | undefined>>({});
const familyVerified = ref<Record<string, boolean>>({});
const registrationCreditsRequired = ref<boolean>(true);
const familyRequired = ref<boolean>(true);
const fetchRegistrationCredit = async () => {
if (allRelays.value) {
for (const relay of filterUniqueRelays(allRelays.value)) {
relayCredits.value[relay.fingerprint] =
await userStore.hasRegistrationCredit(relay.fingerprint);
familyVerified.value[relay.fingerprint] = await userStore.familyVerified2(
relay.fingerprint
);
}
}
registrationCreditsRequired.value = userStore.registrationCreditsRequired;
familyRequired.value = userStore.familyRequired;
};
// Fetch the registration credits when the relays are loaded
watch(allRelays, fetchRegistrationCredit);
if ((allRelaysError as any).value?.cause?.message == 'rate limited') {
toast.add({
id: 'claimable-relays-error',
Expand Down Expand Up @@ -500,6 +526,10 @@ const handleUnlockClick = async (fingerprint: string) => {
userStore.isHardwareRelay(row.fingerprint)
"
:is-loading="registratorStore.loading"
:has-registration-credit="relayCredits[row.fingerprint]"
:registration-credits-required="registrationCreditsRequired"
:family-verified="familyVerified[row.fingerprint]"
:family-required="familyRequired"
/>
<UButton
v-if="currentTab === 'locked'"
Expand Down
35 changes: 10 additions & 25 deletions components/DataTableMyRelays/columns/RegistrationActionColumn.vue
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,11 @@ const props = defineProps<{
row: RelayRow | undefined;
isLocked: boolean;
isLoading?: boolean;
hasRegistrationCredit: boolean | undefined;
registrationCreditsRequired: boolean;
familyVerified: boolean | undefined;
familyRequired: boolean;
}>();
const userStore = useUserStore();
var hasRegistrationCredit: boolean | undefined;
var registrationCreditsRequired: boolean = true;
var familyRequired: boolean = true;
var familyVerified: boolean | undefined;
async function fetchRegistrationCredit() {
if (props?.row) {
hasRegistrationCredit = await userStore.hasRegistrationCredit(
props?.row?.fingerprint
);
familyVerified = await userStore.familyVerified(props?.row?.fingerprint);
registrationCreditsRequired = userStore.registrationCreditsRequired;
familyRequired = userStore.familyRequired;
}
}
fetchRegistrationCredit();
</script>

<template>
Expand All @@ -56,8 +41,8 @@ fetchRegistrationCredit();
v-else-if="
props.row.status === 'claimable' &&
props.isLocked &&
hasRegistrationCredit &&
familyVerified
props.hasRegistrationCredit &&
props.familyVerified
"
size="xl"
color="green"
Expand All @@ -72,8 +57,8 @@ fetchRegistrationCredit();
v-else-if="
props.row.status === 'claimable' &&
props.isLocked &&
!hasRegistrationCredit &&
registrationCreditsRequired
!props.hasRegistrationCredit &&
props.registrationCreditsRequired
"
size="xl"
color="green"
Expand All @@ -87,8 +72,8 @@ fetchRegistrationCredit();
v-else-if="
props.row.status === 'claimable' &&
props.isLocked &&
!familyVerified &&
familyRequired
!props.familyVerified &&
props.familyRequired
"
size="xl"
color="green"
Expand Down
2 changes: 2 additions & 0 deletions composables/relayCache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ interface RelayData {
active: boolean;
class: string;
}[];
state: any;
nicknames: { [key: string]: string };
registrationCredits: string[];
};
Expand Down Expand Up @@ -182,6 +183,7 @@ class RelayCache {
claimable: key === 'claimable' ? newData : [],
nicknames: {},
registrationCredits: [],
state: {},
[key]: newData,
},
};
Expand Down
11 changes: 11 additions & 0 deletions contracts/common/errors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export const FINGERPRINT_REQUIRED = 'Fingerprint required';
export const INVALID_FINGERPRINT = 'Invalid fingerprint';
export const ADDRESS_REQUIRED = 'Address required';
export const INVALID_ADDRESS = 'Invalid address';
export const PUBLIC_KEY_REQUIRED = 'Public Key is required and must valid';
export const ENABLED_REQUIRED = 'Enabled must be a boolean';
export const FINGERPRINTS_MUST_BE_ARRAY =
'Valid array of fingerprints required';
export const INVALID_FAMILY = 'Invalid family';
export const FAMILIES_REQUIRED = 'Families must be an array of family mappings';
export const DUPLICATE_FINGERPRINT = 'Duplicate fingerprint';
8 changes: 8 additions & 0 deletions contracts/common/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export type Fingerprint = string;
export type EvmAddress = string;
export type PublicKey = string;

export type ContractFunctionInput = {
function: string;
[key: string]: any;
};
Loading

0 comments on commit 3490431

Please sign in to comment.