Skip to content

📆 Show "Next meeting" in the chat#5865

Merged
mahibi merged 4 commits intomasterfrom
feat/5661/nextMeeting
Feb 24, 2026
Merged

📆 Show "Next meeting" in the chat#5865
mahibi merged 4 commits intomasterfrom
feat/5661/nextMeeting

Conversation

@AndyScherzinger
Copy link
Member

@AndyScherzinger AndyScherzinger commented Feb 14, 2026


  • Resolves Show "Next meeting" in the chat #5661
  • Follows the implementation approach of the out-of-office feature
  • Reuses the scheduled-call feature date-formatting logic
  • Uses a generic copyright header, like we do in other non-mobile projects (can also switch to personal ones if you like)
  • Add persistence to store info when dismissed with key o id+summary+time, so when any of it changes it will be displayed again

🖼️ Screenshots

🕸️ Web 🏚️ Before 🏡 After
web before Screenshot_20260220_112919

🚧 TODO

  • review & merge

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔖 Capability is checked or not needed
  • 🔙 Backport requests are created or not needed: /backport to stable-xx.x
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

@AndyScherzinger AndyScherzinger added this to the 23.1.0 milestone Feb 14, 2026
@AndyScherzinger AndyScherzinger changed the title Show "Next meeting" in the chat 📆 Show "Next meeting" in the chat Feb 14, 2026
Copy link
Member

@jancborchardt jancborchardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks different from the message pinning style as far as I can see? Or does it work well in conjunction with that?
#5807

2 floating boxes would be fine. Ideal could be one floating box with a horizontal divider line, to save on space and visual complexity.

@jancborchardt jancborchardt self-requested a review February 16, 2026 13:09
Copy link
Member

@jancborchardt jancborchardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nevermind – saw #5867 just now :)

mahibi
mahibi previously requested changes Feb 18, 2026
Copy link
Collaborator

@mahibi mahibi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to already follow the suggestion from #5867 (comment) to make it collapsible?
Otherwise fine for me to do this in followup PRs.

@AndyScherzinger
Copy link
Member Author

Would be nice to already follow the suggestion from #5867 (comment) to make it collapsible?
Otherwise fine for me to do this in followup PRs.

@mahibi Yes, I will simply change it according to the discussion on the other item 👍

Yet I am unsure if that means, hide it forever? hide until you open the chat again or hide it based on the date of the event you display?

WDYT @jancborchardt @nimishavijay ?

Copy link
Member

@jancborchardt jancborchardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yet I am unsure if that means, hide it forever? hide until you open the chat again or hide it based on the date of the event you display?

Probably best would be to:

  • ✅ Always anyway show the "Upcoming call" box in the "Conversation info" view. Directly between conversation description and "Notification settings".
  • ✅ If you x away the "Upcoming call" box that shows directly in the conversation view, show a notice saying "Upcoming call can be viewed in conversation info".

@AndyScherzinger AndyScherzinger force-pushed the feat/5661/nextMeeting branch 2 times, most recently from e3984d0 to 505b8dd Compare February 20, 2026 08:52
@AndyScherzinger
Copy link
Member Author

@mahibi implemented database layer change for dismissing and updated the design as discussed in the general design issue

@AndyScherzinger AndyScherzinger dismissed stale reviews from mahibi and jancborchardt February 20, 2026 10:48

fixed review comments

Copy link
Member

@jancborchardt jancborchardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

This should be added as follow-up :) #5865 (review)

Resolves #5661

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
override fun onNext(model: ConversationModel) {
runBlocking {
val existingEntity = dao.getConversationForUser(user.id!!, model.token).first()
model.hiddenUpcomingEvent = existingEntity?.hiddenUpcomingEvent
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this is the point where we begin to store local-only things in the same entity that is fed by the api.
That's okay of course. We would have to make sure this is handled everywhere where we use the endpoint which can easily be forgotten.

I'm just thinking if we should have a rule how we should do this in general.
What about to have this handled by mappers?
For example the mapper from ConversationModel to ConversationEntity could look like:

fun ConversationModel.asEntity(existing: ConversationEntity?): ConversationEntity {
    return ConversationEntity(
        internalId = internalId,
        accountId = accountId,
       ....

        // here, we could handle all "local-only" fields
        hiddenUpcomingEvent = existing?.hiddenUpcomingEvent ?: false
    )
}

With this, we won't accidentally forget to rescue specific columns from being overwritten.

What do you think @AndyScherzinger ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general it makes sense to discuss that, yes.

If I am not mistaken than messageDraft is local-only as well, no?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@mahibi mahibi Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay i see, the idea wasn't quite fully developed yet :D
So fine for me to merge then

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to discuss how to improve it 👍
The mapper does respect the fields, there just isn't a mapper with an entitled parameter input.

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
@github-actions
Copy link
Contributor

Codacy

Lint

TypemasterPR
Warnings9898
Errors00

SpotBugs

CategoryBaseNew
Bad practice66
Correctness1010
Dodgy code5454
Internationalization33
Malicious code vulnerability33
Performance44
Security11
Total8181

@github-actions
Copy link
Contributor

APK file: https://www.kaminsky.me/nc-dev/android-artifacts/5865.apk

qrcode

To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app.

@mahibi mahibi merged commit 938b725 into master Feb 24, 2026
18 of 19 checks passed
@mahibi mahibi deleted the feat/5661/nextMeeting branch February 24, 2026 20:27
@mahibi
Copy link
Collaborator

mahibi commented Feb 24, 2026

/backport to stable-23.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Show "Next meeting" in the chat

3 participants