Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { computed } from 'vue';
import { toRefs } from 'vue';
import ErrorTooltip from '~/components/error/ErrorTooltip.vue';
import { useRuleToTooltip } from '~/composables/request-policies.composable';
import { useVerifiedReads } from '~/composables/verified-reads.composable';
import { NamedRule, UUID } from '~/generated/station/station.did';
import { services } from '~/plugins/services.plugin';
import { useAppStore } from '~/stores/app.store';
Expand All @@ -38,14 +39,17 @@ const namedRule = ref<NamedRule | null>(null);
const loading = ref(true);
const error = ref<string | null>(null);
const appStore = useAppStore();
const verifiedReads = useVerifiedReads();

const rule = computed(() => (namedRule.value ? namedRule.value.rule : null));
const tooltip = useRuleToTooltip(rule);

onMounted(async () => {
loading.value = true;
try {
namedRule.value = (await services().station.getNamedRule(props.id.value)).named_rule;
namedRule.value = (
await services().station.getNamedRule(props.id.value, verifiedReads)
).named_rule;
} catch (e) {
appStore.sendErrorNotification(e);
error.value = getErrorMessage(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import { computed } from 'vue';
import { toRefs } from 'vue';
import ErrorTooltip from '~/components/error/ErrorTooltip.vue';
import { useRuleToTooltip } from '~/composables/request-policies.composable';
import { useVerifiedReads } from '~/composables/verified-reads.composable';
import { NamedRule, UUID } from '~/generated/station/station.did';
import { services } from '~/plugins/services.plugin';
import { useAppStore } from '~/stores/app.store';
Expand All @@ -65,6 +66,7 @@ const namedRule = ref<NamedRule | null>(null);
const loading = ref(true);
const error = ref<string | null>(null);
const appStore = useAppStore();
const verifiedReads = useVerifiedReads();

const rule = computed(() => (namedRule.value ? namedRule.value.rule : null));

Expand All @@ -77,7 +79,9 @@ const emit = defineEmits<{
onMounted(async () => {
loading.value = true;
try {
namedRule.value = (await services().station.getNamedRule(props.namedRuleId.value)).named_rule;
namedRule.value = (
await services().station.getNamedRule(props.namedRuleId.value, verifiedReads)
Comment thread
aterga marked this conversation as resolved.
Resolved
).named_rule;
} catch (e) {
appStore.sendErrorNotification(e);
error.value = getErrorMessage(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { computed, ref, toRefs, watch } from 'vue';
import AddressBookAutocomplete from '~/components/inputs/AddressBookAutocomplete.vue';
import { AddressBookEntry, ResourceIds } from '~/generated/station/station.did';
import { services } from '~/plugins/services.plugin';
import { useVerifiedReads } from '~/composables/verified-reads.composable';
import { variantIs } from '~/utils/helper.utils';

const input = withDefaults(
Expand All @@ -54,6 +55,7 @@ const input = withDefaults(
const props = toRefs(input);

const stationService = services().station;
const verifiedReads = useVerifiedReads();

const emit = defineEmits<{
(event: 'update:modelValue', payload: ResourceIds): void;
Expand Down Expand Up @@ -96,9 +98,12 @@ watch(
const list = variantIs(model.value, 'Ids') ? model.value['Ids'] : [];
const allEntries = [];
while (list.length > 0) {
const entries = await stationService.listAddressBook({
ids: list.splice(0, 100),
});
const entries = await stationService.listAddressBook(
{
ids: list.splice(0, 100),
},
verifiedReads,
);
allEntries.push(...entries.address_book_entries);
}
loadedEntries.value = allEntries;
Expand Down
6 changes: 5 additions & 1 deletion apps/wallet/src/components/requests/RequestDialog.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,11 @@ describe('RequestDialog', () => {

await flushPromises();

expect(services().station.getNextApprovableRequest).toHaveBeenCalled();
// the next request is rendered from this response, so it is loaded like the initial one
expect(services().station.getNextApprovableRequest).toHaveBeenCalledWith(
expect.anything(),
true,
);

contents = wrapper.findComponent(VCard);

Expand Down
16 changes: 12 additions & 4 deletions apps/wallet/src/components/requests/RequestDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ import RequestDetailView from './RequestDetailView.vue';
import LoadingMessage from '~/components/LoadingMessage.vue';
import { RequestApprovalStatusEnum } from '~/types/requests.types';
import { getRequestUrl } from '~/utils/app.utils';
import { provideVerifiedReads } from '~/composables/verified-reads.composable';

type DataType = {
request: GetRequestResultData['request'];
Expand Down Expand Up @@ -137,6 +138,9 @@ const skippedRequestIds = ref<UUID[]>([]);
const requestType = ref<ListRequestsOperationType | undefined>();
const loadNext = ref(false);

// Shared components rendered inside this dialog load their data with verified calls too.
provideVerifiedReads();

watch(props.open, isOpen => {
if (isOpen) {
currentRequestId.value = props.requestId.value;
Expand Down Expand Up @@ -221,10 +225,14 @@ const onRequestLoaded = (data: Awaited<ReturnType<typeof loadRequest>>): void =>
};

const loadNextRequest = async (): Promise<DataType | null> => {
const nextRequest = await services().station.getNextApprovableRequest({
types: [requestType.value!],
excludedRequestIds: skippedRequestIds.value,
});
// The result is rendered directly, so it is loaded with a verified call like in `loadRequest`.
const nextRequest = await services().station.getNextApprovableRequest(
{
types: [requestType.value!],
excludedRequestIds: skippedRequestIds.value,
},
true,
);

if (nextRequest.length === 0) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,13 @@ const fillReviewContext = (

const loadWithFullInformation = async (): Promise<void> => {
try {
const result = await station.service.getRequest({
request_id: props.request.id,
with_full_info: [true],
});
const result = await station.service.getRequest(
{
request_id: props.request.id,
with_full_info: [true],
},
true,
);

if (variantIs(result.request.operation, 'CallExternalCanister')) {
const candidIdl = await fetchCanisterIdlFromMetadata(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ onBeforeMount(async () => {
try {
const { named_rule } = await station.service.getNamedRule(
props.operation.input.named_rule_id,
true,
);

if (!formValue.value.description) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,12 @@ const fetchDetails = async () => {
}
loading.value = true;

const { permission: result } = await station.service.getPermission({
resource: props.operation.input.resource,
});
const { permission: result } = await station.service.getPermission(
{
resource: props.operation.input.resource,
},
true,
);

if (isDiffMode.value) {
// snapshot original for diff
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,10 @@ const fetchDetails = async () => {
}

loading.value = true;
const currentEntry = await station.service.getRequestPolicy(props.operation.input.policy_id);
const currentEntry = await station.service.getRequestPolicy(
props.operation.input.policy_id,
true,
);

if (isDiffMode.value) {
currentRequestPolicy.value = deepClone(currentEntry.policy);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,10 @@ onBeforeMount(async () => {
if (isDiffMode.value) {
try {
currentUserGroup.value = (
await stationService.getUserGroup({ user_group_id: props.operation.input.user_group_id })
await stationService.getUserGroup(
{ user_group_id: props.operation.input.user_group_id },
true,
)
).user_group;
} catch (e) {
currentUserGroupFailed.value = getErrorMessage(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ onBeforeMount(async () => {
{
user_id: props.operation.input.id,
},
false,
true,
)
).user;
} catch (error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ const appStore = useAppStore();

onMounted(async () => {
try {
const { system } = await stationService.systemInfo();
const { system } = await stationService.systemInfo(!isListMode.value);
currentSystemInfo.value = system;
} catch (error) {
appStore.sendErrorNotification(error);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ const fetchDetails = async () => {
}

loading.value = true;
const { named_rule } = await station.service.getNamedRule(props.operation.input.named_rule_id);
const { named_rule } = await station.service.getNamedRule(
props.operation.input.named_rule_id,
!isListMode.value,
);

formValue.value = named_rule;
} catch (e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ const fetchDetails = async () => {
}

loading.value = true;
const currentEntry = await station.service.getRequestPolicy(props.operation.input.policy_id);
const currentEntry = await station.service.getRequestPolicy(
props.operation.input.policy_id,
true,
);

formValue.value = currentEntry.policy;
} catch (e) {
Expand Down
15 changes: 10 additions & 5 deletions apps/wallet/src/components/users/InteractiveUserGroup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<script setup lang="ts">
import { computed, ref } from 'vue';
import { services } from '~/plugins/services.plugin';
import { useVerifiedReads } from '~/composables/verified-reads.composable';
import { Privilege } from '~/types/auth.types';
import { hasRequiredPrivilege } from '~/utils/auth.utils';

Expand All @@ -34,6 +35,7 @@ const input = defineProps<{
const tooltipContent = ref('');
const isLoadingTooltip = ref(false);
const service = services().station;
const verifiedReads = useVerifiedReads();

const hasListUsersPrivilege = computed(() =>
hasRequiredPrivilege({ anyOf: [Privilege.ListUsers] }),
Expand All @@ -44,11 +46,14 @@ async function fetchGroupDetails() {

isLoadingTooltip.value = true;
try {
const groupUsers = await service.listUsers({
groups: [input.id],
statuses: [{ Active: null }],
limit: 5,
});
const groupUsers = await service.listUsers(
{
groups: [input.id],
statuses: [{ Active: null }],
limit: 5,
},
verifiedReads,
);
tooltipContent.value = `${groupUsers.total} active user${groupUsers.total > 1 ? 's' : ''} in group: ${groupUsers.users.map(user => user.name).join(', ')}`;
} catch (error) {
console.error('Failed to fetch group details:', error);
Expand Down
Loading
Loading