|
68 | 68 | </Dialog> |
69 | 69 | </TransitionRoot> |
70 | 70 | <div |
71 | | - v-if="!isOpen && !status && progress < 100" |
| 71 | + v-if="!isOpen && isSyncing" |
72 | 72 | class="fixed bottom-4 right-4 z-50" |
73 | 73 | > |
74 | 74 | <button |
@@ -103,26 +103,34 @@ import PixelarticonsHeart from '~icons/pixelarticons/heart'; |
103 | 103 | const status = ref(false); |
104 | 104 | const progress = ref(0); |
105 | 105 | const isOpen = ref(false); |
| 106 | +const isSyncing = ref(false); |
| 107 | +
|
106 | 108 | const close = () => { isOpen.value = false; }; |
107 | 109 | const open = () => { isOpen.value = true; }; |
108 | | -const emit = defineEmits(['onRefresh']); |
| 110 | +const emit = defineEmits(['onSync']); |
109 | 111 |
|
110 | 112 | onMounted(async () => { |
111 | | - status.value = (await browser.storage.session.get('status')).status ?? false; |
112 | | - progress.value = (await browser.storage.session.get('progress')).progress ?? 0; |
113 | | - isOpen.value = status.value === false && progress.value < 100; |
| 113 | + const storageData = await browser.storage.session.get(['status', 'progress']); |
| 114 | + status.value = storageData.status ?? false; |
| 115 | + progress.value = storageData.progress ?? 0; |
| 116 | +
|
| 117 | + isSyncing.value = !status.value && progress.value > 0 && progress.value < 100; |
| 118 | +
|
| 119 | + isOpen.value = isSyncing.value; |
114 | 120 | }); |
115 | 121 |
|
116 | 122 | browser.runtime.onMessage.addListener(async (message) => { |
117 | | - if (message.action === 'refresh') { |
| 123 | + if (message.action === 'sync') { |
| 124 | + const wasSyncing = isSyncing.value; |
118 | 125 | progress.value = message.data.progress; |
119 | 126 | status.value = message.data.progress >= 100; |
120 | | -
|
121 | | - if (message.data.progress >= 100) { |
| 127 | + isSyncing.value = !status.value && message.data.progress > 0 && message.data.progress < 100; |
| 128 | + if (isSyncing.value && !wasSyncing) { |
| 129 | + isOpen.value = true; |
| 130 | + } else if (message.data.progress >= 100) { |
122 | 131 | isOpen.value = false; |
123 | 132 | } |
124 | | -
|
125 | | - emit('onRefresh', message.data); |
| 133 | + emit('onSync', message.data); |
126 | 134 | console.warn('BookmarksSync', message.data); |
127 | 135 | } |
128 | 136 | }); |
|
0 commit comments