in frontend/src/hooks/api/aliases.ts [55:142]
export function useAliases(): {
randomAliasData: SWRResponse<RandomAliasData[], unknown>;
customAliasData: SWRResponse<CustomAliasData[], unknown>;
create: AliasCreateFn;
update: AliasUpdateFn;
delete: AliasDeleteFn;
} {
const randomAliases: SWRResponse<RandomAliasData[], unknown> =
useApiV1("/relayaddresses/");
const customAliases: SWRResponse<CustomAliasData[], unknown> =
useApiV1("/domainaddresses/");
const randomAliasData = {
...randomAliases,
data: randomAliases.data,
};
const customAliasData = {
...customAliases,
data: customAliases.data,
};
const createAlias: AliasCreateFn = async (options) => {
if (options.mask_type === "custom") {
const body: Partial<CustomAliasData> = {
enabled: true,
address: options.address,
block_list_emails: options.blockPromotionals,
};
const response = await apiFetch("/domainaddresses/", {
method: "POST",
body: JSON.stringify(body),
});
customAliases.mutate();
return response;
}
const body: Partial<RandomAliasData> = { enabled: true };
const response = await apiFetch("/relayaddresses/", {
method: "POST",
body: JSON.stringify(body),
});
randomAliases.mutate();
return response;
};
const updateAlias: AliasUpdateFn = async (alias, updatedFields) => {
const endpoint =
alias.mask_type === "random"
? `/relayaddresses/${alias.id}/`
: `/domainaddresses/${alias.id}/`;
const response = await apiFetch(endpoint, {
method: "PATCH",
body: JSON.stringify(updatedFields),
});
if (alias.mask_type === "random") {
randomAliases.mutate();
} else {
customAliases.mutate();
}
return response;
};
const deleteAlias: AliasDeleteFn = async (aliasData) => {
const endpoint =
aliasData.mask_type === "random"
? `/relayaddresses/${aliasData.id}/`
: `/domainaddresses/${aliasData.id}/`;
const response = await apiFetch(endpoint, {
method: "DELETE",
});
if (aliasData.mask_type === "random") {
randomAliases.mutate();
} else {
customAliases.mutate();
}
return response;
};
return {
randomAliasData: randomAliasData,
customAliasData: customAliasData,
create: createAlias,
update: updateAlias,
delete: deleteAlias,
};
}