|
1 | 1 | <script lang="ts"> |
2 | 2 | import { onMount } from 'svelte' |
3 | 3 | import { error } from '$lib/notification' |
4 | | - import { store } from '$lib' |
5 | 4 | import Spinner from './Spinner.svelte' |
6 | 5 |
|
7 | | - let loading = true |
8 | | - export let pk = 0 |
| 6 | + let loading = $state(true) |
| 7 | + let { pk = 0, store } = $props() |
9 | 8 |
|
10 | 9 | onMount(async () => { |
11 | 10 | loading = true |
12 | | - const [roleResponse, userResponse] = await Promise.all([store.role.detail.fetch(pk), store.user.list.fetch()]) |
| 11 | + const [roleResponse, userResponse] = await Promise.all([store.role.fetch(pk), store.user.fetchAll()]) |
13 | 12 | if (!roleResponse.ok) { |
14 | 13 | error(roleResponse.statusText) |
15 | 14 | } |
|
21 | 20 |
|
22 | 21 | const member = (user: any) => { |
23 | 22 | const users = store.role.detail.users || store.role.detail.uniqueMembers |
24 | | - const myusers = users.filter((u: any) => { |
25 | | - if (user.id) { |
26 | | - return u.id === user.id |
27 | | - } |
28 | | - return u === user.dn |
29 | | - }) |
30 | | - return myusers.length > 0 |
| 23 | + if (users) { |
| 24 | + const myusers = users.filter((u: any) => { |
| 25 | + if (user.id) { |
| 26 | + return u.id === user.id |
| 27 | + } |
| 28 | + return u === user.dn |
| 29 | + }) |
| 30 | + return myusers.length > 0 |
| 31 | + } |
| 32 | + return false |
31 | 33 | } |
32 | 34 |
|
33 | 35 | const toggleMembership = (user: any) => async (event: any) => { |
34 | 36 | let response |
35 | 37 | if (event.target.checked) { |
36 | | - response = await store.role.detail.assign(store.role.detail.id || store.role.detail.dn, user.id || user.dn) |
| 38 | + response = await store.role.assign(store.role.detail.id || store.role.detail.dn, user.id || user.dn) |
37 | 39 | } else { |
38 | | - response = await store.role.detail.deassign(store.role.detail.id || store.role.detail.dn, user.id || user.dn) |
| 40 | + response = await store.role.deassign(store.role.detail.id || store.role.detail.dn, user.id || user.dn) |
39 | 41 | } |
40 | 42 | if (!response.ok) { |
41 | 43 | error(response.statusText) |
|
49 | 51 | } |
50 | 52 |
|
51 | 53 | const fetchPrevious = async () => { |
52 | | - const response = await store.user.list.fetch(store.user.list.page - 1) |
| 54 | + const response = await store.user.fetchAll(store.user.list.page - 1) |
53 | 55 | if (!response.ok) { |
54 | 56 | error(response.statusText) |
55 | 57 | } |
56 | 58 | } |
57 | 59 |
|
58 | 60 | const fetchNext = async () => { |
59 | | - const response = await store.user.list.fetch(store.user.list.page + 1) |
| 61 | + const response = await store.user.fetchAll(store.user.list.page + 1) |
60 | 62 | if (!response.ok) { |
61 | 63 | error(response.statusText) |
62 | 64 | } |
|
85 | 87 | <input disabled type="checkbox" checked={user.admin} /> |
86 | 88 | </div> |
87 | 89 | <div class="data"> |
88 | | - <input type="checkbox" checked={member(user)} on:change={toggleMembership(user)} /> |
| 90 | + <input type="checkbox" checked={member(user)} onchange={toggleMembership(user)} /> |
89 | 91 | </div> |
90 | 92 | <div class="border"></div> |
91 | 93 | {/each} |
92 | 94 | </div> |
93 | 95 | </div> |
94 | 96 | <div class="actions"> |
95 | | - <button class="button" disabled={store.user.list.page === 1} on:click={fetchPrevious}><</button> |
| 97 | + <button class="button" disabled={store.user.list.page === 1} onclick={fetchPrevious}><</button> |
96 | 98 | {store.user.list.page} |
97 | | - <button class="button" disabled={store.user.list.page === store.user.list.pages} on:click={fetchNext} |
| 99 | + <button class="button" disabled={store.user.list.page === store.user.list.pages} onclick={fetchNext} |
98 | 100 | >></button |
99 | 101 | > |
100 | 102 | </div> |
|
0 commit comments