|
5 | 5 |
|
6 | 6 | import { defineStore } from 'pinia' |
7 | 7 | import { set } from 'vue' |
8 | | -import axios from 'axios' |
| 8 | +import { generateUrl } from '@nextcloud/router' |
| 9 | +import axios from '@nextcloud/axios' |
| 10 | +import { emit, subscribe } from '@nextcloud/event-bus' |
9 | 11 |
|
10 | 12 | export const useUserConfigStore = defineStore('userconfig', { |
11 | 13 | state: () => ({ |
12 | | - grid_view: true, |
| 14 | + grid_view: true, // valor inicial, mas será sobrescrito pelo servidor |
13 | 15 | }), |
14 | 16 | actions: { |
| 17 | + onUpdate(key, value) { |
| 18 | + set(this, key, value) |
| 19 | + }, |
| 20 | + |
15 | 21 | async update(key, value) { |
16 | 22 | const oldValue = this[key] |
17 | | - |
18 | | - set(this, key, value) |
| 23 | + this.onUpdate(key, value) |
19 | 24 |
|
20 | 25 | try { |
21 | 26 | const response = await axios.put( |
22 | | - `/apps/files/api/v1/config/${key}`, |
23 | | - { value } |
| 27 | + generateUrl('/apps/files/api/v1/config/{key}', { key }), |
| 28 | + { value }, |
24 | 29 | ) |
25 | 30 |
|
26 | 31 | if (response?.data?.value !== undefined) { |
27 | | - set(this, key, response.data.value) |
| 32 | + this.onUpdate(key, response.data.value) |
28 | 33 | } |
| 34 | + |
| 35 | + emit('files:config:updated', { key, value }) |
29 | 36 | } catch (error) { |
30 | 37 | console.error('Erro ao salvar configuração:', error) |
31 | | - |
32 | | - set(this, key, oldValue) |
| 38 | + this.onUpdate(key, oldValue) |
33 | 39 | } |
34 | 40 | }, |
| 41 | + |
| 42 | + initListeners() { |
| 43 | + console.log('Initializing user config listeners...') |
| 44 | + subscribe('files:config:updated', ({ key, value }) => { |
| 45 | + this.onUpdate(key, value) |
| 46 | + }) |
| 47 | + }, |
35 | 48 | }, |
36 | 49 | }) |
0 commit comments