I ran across a Flutter package that provides a cool chat style widget which inspired me to start working on this. But then I discovered that there’s no API call to retrieve your sent messages. So we could display all the incoming messages from each user like chats, but not sent ones (unless we remembered the ones we sent in Thunder, but that wouldn’t be everything).
Just wanted to chime in here - I also think having a chat-style widget would also be best for private messages but would be difficult to implement without some workarounds (mainly due to the limitations of the API as you mentioned)!
But then I discovered that there’s no API call to retrieve your sent messages
From what I can see in the API, there is a creatorId field that can be specified to grab chats for a given user. This could potentially work by passing in your own account id to retrieve your sent messages (although, this would likely return back your sent messages aggregated across all users so it wouldn’t be ideal)
It would be a bit of a hack but we could call that API endpoint, and cache the results locally to be used in chats. This adds a layer of complexity since we would need to consider how to keep messages synced up (e.g., if a user edits a message elsewhere, it should be reflected here). There also doesn’t seem to be a way to get a specific private message by id, so that also complicates the issue further 😅
Thanks for the explanation! I just tried the API passing my own user ID as the creator_id and I seem to be getting back all messages. :( If they can add an endpoint or parameter to get a “conversation” (i.e., all messages incoming/outgoing to/from a specific user) then a chat-style interface would be much easier to implement!
Yeah, this is exactly the problem I’ve been planning to eventually solve. It’s not an ideal way to lay out DMs, so an app that puts in some work to make it nicer to interact with DMs has been on my wish-list for Lemmy.
I intended to do so essentially either by maintaining a local database of messages as suggested by @darklightxi@lemmy.world, or, by loading one page at a time, and transforming that into the several conversations.
Then, the “end” of any list (the bottom of the conversation list, or the top of a chat) would have a “load more” button to load more pages, the contents of which would just end up in their respective conversations.
I hadn’t thought of the fact that DMs can be edited, so the latter option is likely better instead of a local database.
It would serve 99% of cases where you’re having back and forths with just a couple users, where your most recent DMs would always show up with their most recent messages.
Don’t messages sent by you come back in a list together with any received ones?
Oh wow, you’re right! Somehow I totally missed that. Even Thunder displays sent messages.
So you’re right. You could get all incoming messages from a specific user by passing creator_id but you just couldn’t get all the message you sent to a specific person without getting everything and filtering them.
Is it planned to add this feature in the near future?
You already got an answer from the top dev, but adding in a chat app style UI for DMs is on my personal to-do list as a contributor.
I don’t have time work on Thunder atm, but it’s something I absolutely will get to eventually if no-one else beats me to it.
Many thx. I really like this app. Keep up the good work!
I ran across a Flutter package that provides a cool chat style widget which inspired me to start working on this. But then I discovered that there’s no API call to retrieve your sent messages. So we could display all the incoming messages from each user like chats, but not sent ones (unless we remembered the ones we sent in Thunder, but that wouldn’t be everything).
Just wanted to chime in here - I also think having a chat-style widget would also be best for private messages but would be difficult to implement without some workarounds (mainly due to the limitations of the API as you mentioned)!
From what I can see in the API, there is a
creatorId
field that can be specified to grab chats for a given user. This could potentially work by passing in your own account id to retrieve your sent messages (although, this would likely return back your sent messages aggregated across all users so it wouldn’t be ideal)It would be a bit of a hack but we could call that API endpoint, and cache the results locally to be used in chats. This adds a layer of complexity since we would need to consider how to keep messages synced up (e.g., if a user edits a message elsewhere, it should be reflected here). There also doesn’t seem to be a way to get a specific private message by id, so that also complicates the issue further 😅
Thanks for the explanation! I just tried the API passing my own user ID as the
creator_id
and I seem to be getting back all messages. :( If they can add an endpoint or parameter to get a “conversation” (i.e., all messages incoming/outgoing to/from a specific user) then a chat-style interface would be much easier to implement!Yeah, this is exactly the problem I’ve been planning to eventually solve. It’s not an ideal way to lay out DMs, so an app that puts in some work to make it nicer to interact with DMs has been on my wish-list for Lemmy.
I intended to do so essentially either by maintaining a local database of messages as suggested by @darklightxi@lemmy.world, or, by loading one page at a time, and transforming that into the several conversations.
Then, the “end” of any list (the bottom of the conversation list, or the top of a chat) would have a “load more” button to load more pages, the contents of which would just end up in their respective conversations.
I hadn’t thought of the fact that DMs can be edited, so the latter option is likely better instead of a local database.
It would serve 99% of cases where you’re having back and forths with just a couple users, where your most recent DMs would always show up with their most recent messages.
Really? Don’t messages sent by you come back in a list together with any received ones?
The only issue in need of solving afaik was that you can’t get your exchange with a given user, just all of them in a big list.
Oh wow, you’re right! Somehow I totally missed that. Even Thunder displays sent messages.
So you’re right. You could get all incoming messages from a specific user by passing
creator_id
but you just couldn’t get all the message you sent to a specific person without getting everything and filtering them.Not that i am aware of, but i haven’t been following the development closely