Skip to content

Commit 079dba5

Browse files
committed
feat: allow linking to a specific convo, messages view
1 parent 6c6900f commit 079dba5

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

src/views/Messages.vue

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ export default {
165165
next(vm => {
166166
messagesApi.page(query)
167167
.then(d => vm.recentMessages = d)
168-
.then(() => vm.loadConversation(vm.recentMessages.messages[0].conversation_id, { init: true }))
168+
.then(() => vm.preloadConversation(to.query.id || vm.recentMessages.messages[0].conversation_id))
169169
.catch(() => {})
170170
})
171171
},
@@ -176,20 +176,24 @@ export default {
176176
}
177177
messagesApi.page(query)
178178
.then(d => this.recentMessages = d)
179-
.then(() => this.loadConversation(this.recentMessages.messages[0].conversation_id, { init: true }))
179+
.then(() => this.preloadConversation(to.query.id || this.recentMessages.messages[0].conversation_id))
180180
.catch(() => {})
181181
next()
182182
},
183183
setup() {
184184
const loadRecentMessages = inc => {
185185
const newPage = v.recentMessages.page + inc
186186
let query = { ...$route.query, page: newPage }
187+
delete query.id
187188
if (query.page === 1 || !query.page) delete query.page
188189
if ($route.query.page !== v.page)
189190
$router.replace({ name: $route.name, params: $route.params, query: query })
190191
}
191192
192-
const loadConversation = (conversationId, options) => {
193+
const loadConversation = conversationId =>
194+
$router.replace({ name: $route.name, params: $route.params, query: { ...$route.query, id: conversationId } })
195+
196+
const preloadConversation = (conversationId, options) => {
193197
options = options || {}
194198
v.selectedConversationId = conversationId
195199
v.recentMessages.messages.forEach(message => {
@@ -201,8 +205,6 @@ export default {
201205
v.currentSubject = data.messages[0].content.subject
202206
v.currentConversation = data
203207
v.currentConversation.id = conversationId
204-
if (options.init) { v.isActive = false }
205-
else { v.isActive = true }
206208
if (options.saveInput) {
207209
v.newMessage.subject = v.newMessage.subject || v.currentConversation.subject
208210
v.newMessage.content.body = v.newMessage.content.body || ''
@@ -238,7 +240,20 @@ export default {
238240
}
239241
240242
const reloadConversation = () => console.log('reloadConversation')
241-
const loadMoreMessages = () => true
243+
const loadMoreMessages = () => {
244+
const options = {
245+
timestamp: v.currentConversation.last_message_timestamp,
246+
message_id: v.currentConversation.last_message_id
247+
}
248+
messagesApi.convos.page(v.currentConversation.id, options)
249+
// build out conversation information
250+
.then(data => {
251+
v.currentConversation.messages = v.currentConversation.messages.concat(data.messages);
252+
v.currentConversation.last_message_id = data.last_message_id;
253+
v.currentConversation.last_message_timestamp = data.last_message_timestamp;
254+
v.currentConversation.has_next = data.has_next;
255+
})
256+
}
242257
const openReportModal = message => console.log(message)
243258
const openDeleteModal = message => console.log(message)
244259
const addQuote = message => console.log(message)
@@ -273,7 +288,6 @@ export default {
273288
currentConversation: { messages: [] },
274289
selectedConversationId: null,
275290
newMessage: null,
276-
isActive: false,
277291
recentMessages: {},
278292
currentSubject: null,
279293
pageMax: computed(() => Math.ceil(v.recentMessages.total_convo_count / v.recentMessages.limit)),
@@ -286,7 +300,7 @@ export default {
286300
}
287301
})
288302
289-
return { ...toRefs(v), loadRecentMessages, reloadConversation, loadConversation, loadMoreMessages, openReportModal, openDeleteModal, canDeleteConversation, canDeleteMessage, addQuote, canCreateConversation, canCreateMessage, listMessageReceivers, humanDate }
303+
return { ...toRefs(v), loadRecentMessages, reloadConversation, preloadConversation, loadConversation, loadMoreMessages, openReportModal, openDeleteModal, canDeleteConversation, canDeleteMessage, addQuote, canCreateConversation, canCreateMessage, listMessageReceivers, humanDate }
290304
}
291305
}
292306
</script>

0 commit comments

Comments
 (0)