Skip to content

Commit 406cfac

Browse files
committed
(demo) refactor firestore data
1 parent 53155bd commit 406cfac

File tree

3 files changed

+38
-47
lines changed

3 files changed

+38
-47
lines changed

demo/src/App.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,13 @@ export default {
116116
117117
methods: {
118118
resetData() {
119-
firestoreService.getAllRooms().then(rooms => {
120-
rooms.forEach(async room => {
121-
await firestoreService.getMessages(room.id).then(messages => {
122-
messages.forEach(message => {
119+
firestoreService.getAllRooms().then(({ data }) => {
120+
data.forEach(async room => {
121+
await firestoreService.getMessages(room.id).then(({ data }) => {
122+
data.forEach(message => {
123123
firestoreService.deleteMessage(room.id, message.id)
124-
if (message.data().files) {
125-
message.data().files.forEach(file => {
124+
if (message.files) {
125+
message.files.forEach(file => {
126126
storageService.deleteFile(
127127
this.currentUserId,
128128
message.id,
@@ -137,8 +137,8 @@ export default {
137137
})
138138
})
139139
140-
firestoreService.getAllUsers().then(users => {
141-
users.forEach(user => {
140+
firestoreService.getAllUsers().then(({ data }) => {
141+
data.forEach(user => {
142142
firestoreService.deleteUser(user.id)
143143
})
144144
})

demo/src/ChatContainer.vue

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,17 @@ export default {
214214
this.startRooms
215215
)
216216
217-
const rooms = await firestoreService.getRooms(query)
218-
// this.incrementDbCounter('Fetch Rooms', rooms.size)
217+
const { data, docs } = await firestoreService.getRooms(query)
218+
// this.incrementDbCounter('Fetch Rooms', data.length)
219219
220-
this.roomsLoaded = rooms.empty || rooms.size < this.roomsPerPage
220+
this.roomsLoaded = data.length === 0 || data.length < this.roomsPerPage
221221
222222
if (this.startRooms) this.endRooms = this.startRooms
223-
this.startRooms = rooms.docs[rooms.docs.length - 1]
223+
this.startRooms = docs[docs.length - 1]
224224
225225
const roomUserIds = []
226-
rooms.forEach(room => {
227-
room.data().users.forEach(userId => {
226+
data.forEach(room => {
227+
room.users.forEach(userId => {
228228
const foundUser = this.allUsers.find(user => user?._id === userId)
229229
if (!foundUser && roomUserIds.indexOf(userId) === -1) {
230230
roomUserIds.push(userId)
@@ -235,19 +235,17 @@ export default {
235235
// this.incrementDbCounter('Fetch Room Users', roomUserIds.length)
236236
const rawUsers = []
237237
roomUserIds.forEach(userId => {
238-
const promise = firestoreService
239-
.getUser(userId)
240-
.then(user => user.data())
238+
const promise = firestoreService.getUser(userId)
241239
rawUsers.push(promise)
242240
})
243241
244242
this.allUsers = [...this.allUsers, ...(await Promise.all(rawUsers))]
245243
246244
const roomList = {}
247-
rooms.forEach(room => {
248-
roomList[room.id] = { ...room.data(), users: [] }
245+
data.forEach(room => {
246+
roomList[room.id] = { ...room, users: [] }
249247
250-
room.data().users.forEach(userId => {
248+
room.users.forEach(userId => {
251249
const foundUser = this.allUsers.find(user => user?._id === userId)
252250
if (foundUser) roomList[room.id].users.push(foundUser)
253251
})
@@ -374,17 +372,17 @@ export default {
374372
375373
firestoreService
376374
.getMessages(room.roomId, this.messagesPerPage, this.lastLoadedMessage)
377-
.then(({ messages, docs }) => {
375+
.then(({ data, docs }) => {
378376
// this.incrementDbCounter('Fetch Room Messages', messages.length)
379377
if (this.selectedRoom !== room.roomId) return
380378
381-
if (messages.length === 0 || messages.length < this.messagesPerPage) {
379+
if (data.length === 0 || data.length < this.messagesPerPage) {
382380
setTimeout(() => (this.messagesLoaded = true), 0)
383381
}
384382
385383
if (options.reset) this.messages = []
386384
387-
messages.forEach(message => {
385+
data.forEach(message => {
388386
const formattedMessage = this.formatMessage(room, message)
389387
this.messages.unshift(formattedMessage)
390388
})
@@ -562,20 +560,17 @@ export default {
562560
uploadTask.snapshot.ref
563561
)
564562
565-
const messageDoc = await firestoreService.getMessage(
566-
roomId,
567-
messageId
568-
)
569-
570-
const files = messageDoc.data().files
563+
const message = await firestoreService.getMessage(roomId, messageId)
571564
572-
files.forEach(f => {
565+
message.files.forEach(f => {
573566
if (f.url === file.localUrl) {
574567
f.url = url
575568
}
576569
})
577570
578-
await firestoreService.updateMessage(roomId, messageId, { files })
571+
await firestoreService.updateMessage(roomId, messageId, {
572+
files: message.files
573+
})
579574
resolve(true)
580575
}
581576
)
@@ -644,7 +639,7 @@ export default {
644639
user._id
645640
)
646641
647-
if (!query1.empty) {
642+
if (query1.data.length) {
648643
return this.loadRoom(query1)
649644
}
650645
@@ -653,7 +648,7 @@ export default {
653648
this.currentUserId
654649
)
655650
656-
if (!query2.empty) {
651+
if (query2.data.length) {
657652
return this.loadRoom(query2)
658653
}
659654
@@ -729,7 +724,7 @@ export default {
729724
730725
async listenRooms(query) {
731726
const listener = firestoreService.listenRooms(query, rooms => {
732-
// this.incrementDbCounter('Listen Rooms Typing Users', rooms.size)
727+
// this.incrementDbCounter('Listen Rooms Typing Users', rooms.length)
733728
rooms.forEach(room => {
734729
const foundRoom = this.rooms.find(r => r.roomId === room.id)
735730
if (foundRoom) {
@@ -840,8 +835,8 @@ export default {
840835
return alert('Nope, for demo purposes you cannot delete this room')
841836
}
842837
843-
firestoreService.getMessages(roomId).then(({ messages }) => {
844-
messages.forEach(message => {
838+
firestoreService.getMessages(roomId).then(({ data }) => {
839+
data.forEach(message => {
845840
firestoreService.deleteMessage(roomId, message.id)
846841
if (message.files) {
847842
message.files.forEach(file => {

demo/src/database/firestore.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@ export const firestoreListener = onSnapshot
3939
export const deleteDbField = deleteField()
4040

4141
const getDocuments = query => {
42-
return getDocs(query)
42+
return getDocs(query).then(docs => {
43+
return { data: formatQueryDataArray(docs), docs: docs.docs }
44+
})
4345
}
4446

4547
const getDocument = ref => {
46-
return getDoc(ref)
48+
return getDoc(ref).then(doc => formatQueryDataObject(doc))
4749
}
4850

4951
const addDocument = (ref, data) => {
@@ -182,23 +184,17 @@ export const getMessages = (roomId, messagesPerPage, lastLoadedMessage) => {
182184
limit(messagesPerPage),
183185
startAfter(lastLoadedMessage)
184186
)
185-
).then(messages => {
186-
return { messages: formatQueryDataArray(messages), docs: messages.docs }
187-
})
187+
)
188188
} else if (messagesPerPage) {
189189
return getDocuments(
190190
query(
191191
messagesRef(roomId),
192192
orderBy(TIMESTAMP_FIELD, 'desc'),
193193
limit(messagesPerPage)
194194
)
195-
).then(messages => {
196-
return { messages: formatQueryDataArray(messages), docs: messages.docs }
197-
})
195+
)
198196
} else {
199-
return getDocuments(messagesRef(roomId)).then(messages => {
200-
return { messages: formatQueryDataArray(messages), docs: messages.docs }
201-
})
197+
return getDocuments(messagesRef(roomId))
202198
}
203199
}
204200

0 commit comments

Comments
 (0)