fix(dash): allow any valid id as page URL parameter

This commit is contained in:
Jake Fulmine 2024-06-23 18:56:18 +02:00
parent 7fe492e98e
commit 009bbde176
No known key found for this signature in database
GPG key ID: 177E8DB7BF4C60B2
2 changed files with 14 additions and 15 deletions

View file

@ -50,15 +50,13 @@
let groupsStore: Writable<Group[]> = writable([]) let groupsStore: Writable<Group[]> = writable([])
$: members = setContext<Writable<Member[]>>("members", membersStore) $: members = setContext<Writable<Member[]>>("members", membersStore)
$: groups = setContext<Writable<Group[]>>("groups", groupsStore) $: groups = setContext<Writable<Group[]>>("groups", groupsStore)
$: group = $groups.filter(g => g.id === $params.id)[0] || {} let group: Group|null = null
let title = isPublic ? "group" : "group (dash)"; let title = isPublic ? "group" : "group (dash)";
async function fetchGroup() { async function fetchGroup() {
try { try {
const res = await api().groups($params.id).get({auth: !isPublic}); group = await api().groups($params.id).get({ auth: !isPublic })
$groups = [res]
group = $groups.filter(g => g.id === $params.id)[0];
if (!isPublic && !group.privacy) { if (!isPublic && !group.privacy) {
notOwnSystem = true; notOwnSystem = true;
throw new Error("Group is not from own system."); throw new Error("Group is not from own system.");
@ -85,7 +83,7 @@
members.set(groupMembers); members.set(groupMembers);
} else { } else {
const systemGroups: Group[] = await api().systems("@me").groups.get({ auth: true, query: { with_members: true } }); const systemGroups: Group[] = await api().systems("@me").groups.get({ auth: true, query: { with_members: true } });
group.members = systemGroups.filter((g: Group) => g.id === $params.id).map((m: Member) => m.uuid); group.members = systemGroups.find((g: Group) => g.uuid === group.uuid).members
groups.set(systemGroups); groups.set(systemGroups);
const systemMembers = await api().systems("@me").members.get({ auth: true }); const systemMembers = await api().systems("@me").members.get({ auth: true });

View file

@ -50,7 +50,7 @@
let groupsStore: Writable<Group[]> = writable([]) let groupsStore: Writable<Group[]> = writable([])
$: members = setContext<Writable<Member[]>>("members", membersStore) $: members = setContext<Writable<Member[]>>("members", membersStore)
$: groups = setContext<Writable<Group[]>>("groups", groupsStore) $: groups = setContext<Writable<Group[]>>("groups", groupsStore)
$: member = $members.filter(m => m.id === $params.id)[0] || {} let member: Member|null = null
let title = isPublic ? "member" : "member (dash)"; let title = isPublic ? "member" : "member (dash)";
@ -58,12 +58,10 @@
try { try {
if (isPublic) { if (isPublic) {
const res: Member = await api().members($params.id).get({auth: !isPublic}); const res: Member = await api().members($params.id).get({auth: !isPublic});
$members = [res] member = res;
member = $members.filter(m => m.id === $params.id)[0]
} else { } else {
const res: Member[] = await api().systems("@me").members.get({ auth: true}); const res: Member = await api().members($params.id).get({auth: !isPublic});
$members = res; member = res
member = $members.filter(m => m.id === $params.id)[0]
if (!member.privacy) { if (!member.privacy) {
notOwnSystem = true; notOwnSystem = true;
@ -86,14 +84,17 @@
async function fetchGroups() { async function fetchGroups() {
try { try {
let memberGroups: Group[] = await api().members($params.id).groups().get({auth: !isPublic });
if (!isPublic) memberGroups.forEach(g => g.members = [])
groups.set(memberGroups)
if (!isPublic) { if (!isPublic) {
const systemGroups: Group[] = await api().systems("@me").groups.get({ auth: true, query: { with_members: true } }); const systemGroups: Group[] = await api().systems("@me").groups.get({ auth: true, query: { with_members: true } });
const memberList: Member[] = await api().systems("@me").members.get({ auth: true })
members.set(memberList)
groups.set(systemGroups) groups.set(systemGroups)
} else {
let memberGroups: Group[] = await api().members($params.id).groups().get({auth: !isPublic });
if (!isPublic) memberGroups.forEach(g => g.members = [])
groups.set(memberGroups)
} }
groupErr = ""; groupErr = "";
groupLoading = false; groupLoading = false;
} catch (error) { } catch (error) {