Skip to content

Commit d5b5ae5

Browse files
committed
perf: don't show skeleton for cached mailboxes
Signed-off-by: Richard Steinmetz <[email protected]>
1 parent bbd8178 commit d5b5ae5

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

Diff for: src/components/EnvelopeList.vue

+8-7
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
</div>
112112
</transition>
113113

114-
<transition-group name="list">
114+
<transition-group :name="listTransitionName">
115115
<Envelope v-for="(env, index) in sortedEnvelops"
116116
:key="env.databaseId"
117117
:data="env"
@@ -209,11 +209,6 @@ export default {
209209
required: false,
210210
default: undefined,
211211
},
212-
refreshing: {
213-
type: Boolean,
214-
required: true,
215-
default: true,
216-
},
217212
loadingMore: {
218213
type: Boolean,
219214
required: true,
@@ -223,6 +218,10 @@ export default {
223218
required: false,
224219
default: false,
225220
},
221+
skipTransition: {
222+
type: Boolean,
223+
default: false,
224+
},
226225
},
227226
data() {
228227
return {
@@ -238,7 +237,6 @@ export default {
238237
sortOrder() {
239238
return this.mainStore.getPreference('sort-order', 'newest')
240239
},
241-
242240
sortedEnvelops() {
243241
if (this.sortOrder === 'oldest') {
244242
return [...this.envelopes].sort((a, b) => {
@@ -298,6 +296,9 @@ export default {
298296
const mailboxIds = this.sortedEnvelops.map(envelope => envelope.mailboxId)
299297
return Array.from(new Set(mailboxIds)).length > 1
300298
},
299+
listTransitionName() {
300+
return this.skipTransition ? 'disabled' : 'list'
301+
},
301302
},
302303
watch: {
303304
sortedEnvelops(newVal, oldVal) {

Diff for: src/components/Mailbox.vue

+15-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
:mailbox="mailbox"
2121
:search-query="searchQuery"
2222
:envelopes="envelopesToShow"
23-
:refreshing="refreshing"
2423
:loading-more="loadingMore"
2524
:load-more-button="showLoadMore"
25+
:skip-transition="skipListTransition"
2626
@delete="onDelete"
2727
@load-more="loadMore" />
2828
</div>
@@ -102,6 +102,8 @@ export default {
102102
loadMailboxInterval: undefined,
103103
expanded: false,
104104
endReached: false,
105+
syncedMailboxes: new Set(),
106+
skipListTransition: false,
105107
}
106108
},
107109
computed: {
@@ -179,7 +181,17 @@ export default {
179181
},
180182
async loadEnvelopes() {
181183
logger.debug(`Fetching envelopes for mailbox ${this.mailbox.databaseId} (${this.searchQuery})`, this.mailbox)
182-
this.loadingEnvelopes = true
184+
185+
if (!this.syncedMailboxes.has(this.mailbox.databaseId)) {
186+
// Only trigger skeleton if we didn't sync envelopes yet
187+
this.loadingEnvelopes = true
188+
} else {
189+
this.skipListTransition = true
190+
this.$nextTick(() => {
191+
this.skipListTransition = false
192+
})
193+
}
194+
183195
this.loadingCacheInitialization = false
184196
this.error = false
185197

@@ -192,6 +204,7 @@ export default {
192204

193205
logger.debug(envelopes.length + ' envelopes fetched', { envelopes })
194206

207+
this.syncedMailboxes.add(this.mailbox.databaseId)
195208
this.loadingEnvelopes = false
196209
} catch (error) {
197210
await matchError(error, {

0 commit comments

Comments
 (0)