Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📣 Set reminder: file/folder #39181

Closed
3 tasks done
AndyScherzinger opened this issue Jul 6, 2023 · 26 comments
Closed
3 tasks done

📣 Set reminder: file/folder #39181

AndyScherzinger opened this issue Jul 6, 2023 · 26 comments
Assignees
Labels
4. to release Ready to be released and/or waiting for tests to finish design Design, UI, UX, etc. enhancement

Comments

@AndyScherzinger
Copy link
Member

AndyScherzinger commented Jul 6, 2023

Tasks


Add ability to set reminders for a file/folder resulting in a notification pointing to the item at the chosen time, see example GMail:

#39181 (comment)
image

For a first iteration of the feature we only implement the fixed options, no option to pick an individual time.

For scheduling a notification please check Deck / @juliushaertl since Deck can already send notification for Deck cards when you hit their due date.

The notification should simply be "Reminder for {file-name or folder-name}" with the placeholder being bold + a action button "View file" or "View folder" that brings you directly to the file/folder in the files view (like the "View chat" does for notifications when being mentioned in a Talk room giving you an easy way to navigate there.

@AndyScherzinger AndyScherzinger added enhancement design Design, UI, UX, etc. 0. Needs triage Pending check for reproducibility or if it fits our roadmap labels Jul 6, 2023
@AndyScherzinger
Copy link
Member Author

@jancborchardt can you or one of the designers specific how this should be implemented? Like where would the reminder option be located, which options would be offer?

@jancborchardt
Copy link
Member

@nimishavijay this is very related to "snooze mails", do you want to specify both together? :)
nextcloud/mail#2048

@jancborchardt jancborchardt moved this to 📐 Design phase in 🖍 Design team Jul 6, 2023
@nimishavijay nimishavijay self-assigned this Jul 6, 2023
@AndyScherzinger AndyScherzinger changed the title Remind me: file/folder 📣 Remind me: file/folder Jul 6, 2023
@jancborchardt
Copy link
Member

jancborchardt commented Jul 19, 2023

Like where would the reminder option be located

We should simply put it in the 3-dot menu in files. Between "Move or copy" and "Edit locally" would be a good position. The label is "Set a reminder" and it would open a submenu like we do for "More actions" in Mail.
Ideally (if possible) it would have the set reminder time in the subline of that entry, or if set the text could change to say "Reminder tomorrow" or "Reminder in 5 hours" (could be dynamic).

which options would be offer?

We could do it like Gmail which is sort of a standard:
image

Then at the specified time you would get a Nextcloud notification. If it is a shared file, still only the person who set a reminder should get a notification.

Things out of scope for now:

  • Pick a date & time / Custom time can be left out for now, too advanced as this should be a simple and quick click & forget
  • @nimishavijay also mentioned a possible "Reminder note" feature, but here too let’s keep it simple first only with the reminder time.

cc @nimishavijay to coordinate for the options we would have in Mail and other apps for this.

@jancborchardt jancborchardt moved this from 📐 Design phase to 🏗️ At engineering in 🖍 Design team Jul 19, 2023
@AndyScherzinger
Copy link
Member Author

@Pytal if you have any design questions please get in touch with @jancborchardt or @nimishavijay. @jancborchardt and @nimishavijay I took the liberty to summarize things in the issue description and also spec how the notification should look like and behave.

@Pytal Pytal added 2. developing Work in progress and removed 0. Needs triage Pending check for reproducibility or if it fits our roadmap labels Jul 21, 2023
@Pytal
Copy link
Member

Pytal commented Aug 1, 2023

The label is "Set a reminder"

For consistency alongside nextcloud/spreed#10075 will we be labelling these as "Set a reminder" or "Remind later" @jancborchardt?

cc @nickvergessen

@jancborchardt jancborchardt changed the title 📣 Remind me: file/folder 📣 Set reminder: file/folder Aug 2, 2023
@jancborchardt
Copy link
Member

@Pytal @nickvergessen for consistency let’s call it "Set reminder" in both cases. We don’t use "me" anywhere in the interface, and "Set reminder" is a simple common expression and call to action. :)

@Pytal Pytal mentioned this issue Aug 3, 2023
10 tasks
@Pytal Pytal added the 3. to review Waiting for reviews label Aug 3, 2023
@Pytal
Copy link
Member

Pytal commented Aug 4, 2023

Any icon changes needed @jancborchardt @nimishavijay ?

image
image

@Antreesy
Copy link
Contributor

Antreesy commented Aug 4, 2023

As we started to discuss it here:

  • Should the time appearance be adjusted to user's locale (24h, 12h)?
  • Which time points are we picking:
    • At morning - 8 AM or 9 AM?
    • At evening - 6 PM or 8 PM?
  • If time has passed (for example, I'm picking "Later today 6 PM" at 6:15 PM) - what should be shown oft this option? Maybe, "plus two hours rounded" from current time (8:00 PM)?

@nickvergessen
Copy link
Member

Should the time appearance be adjusted to user's locale (24h, 12h)?

yes of course, just use the existing methods we have (nextcloud-moment)

@AndyScherzinger
Copy link
Member Author

Which time points are we picking:

see #39181 (comment)

  • At morning - 8 AM
  • At evening - 6 PM

If time has passed (for example, I'm picking "Later today 6 PM" at 6:15 PM) - what should be shown oft this option? Maybe, "plus two hours rounded" from current time (8:00 PM)?

Nice idea, yet it get complicated, what if I open the menu 2,5h after the time slot? I would vote to keep it simple and just hide options that lie in the past, which can only happen for "Later today". What do you think @jancborchardt @nimishavijay

@SystemKeeper
Copy link
Contributor

I would vote to keep it simple and just hide options that lie in the past, which can only happen for "Later today".

That’s what I have done right now on iOS. If we are >= 6pm the today option is not visible. Please also see nextcloud/talk-ios#1313 (comment) regarding the naming, since I think „This weekend“ is highly confusing depending on which day I am opening the menu (what happens when doing this on Saturday?). Or „Next week“ might be confusing on a Sunday, especially if it’s a region where starting of the week is on Sunday.

@Antreesy
Copy link
Contributor

Antreesy commented Aug 4, 2023

especially if it’s a region where starting of the week is on Sunday.

It should be possible to get and use first day of week from NC Locale for Next week.
Will be moment().weekday(0) for JS code, but not aware of analog for mobiles

@SystemKeeper
Copy link
Contributor

There are probably ways, yes. But most likely the user does not want to be reminded on a Sunday. I would still prefer to be explicit about it and use „Next Monday“ and „Next Saturday“

@AndyScherzinger
Copy link
Member Author

"Next week" isn't confusing (see screenshots) since it also shows the exact time (Mon, 8:00 AM) for example. So "Monday" is already in.

"This weekend" would then also be hidden applying the rule also @SystemKeeper mentioned, if Saturday past 8:00 AM, hide the option.

@nimishavijay
Copy link
Member

Any icon changes needed?

Nice! I would suggest to use the alarm icon for "Set reminder".

For the time options, since they are simply communicating different times, we could keep it simple and use radio buttons like in Mail? That would also make it easy for the "Clear reminder" option -- no need to mention the time. Would that be possible? :)

Nice idea, yet it get complicated, what if I open the menu 2,5h after the time slot? I would vote to keep it simple and just hide options that lie in the past, which can only happen for "Later today"

I can see a use case where someone is at work and wants to remind themselves of a personal file after they get back. How about a solution between always showing +2h and always hiding after 18:00? Logic:

  • Current time < 17:30 -->Later today = 18:00
  • Current time between 17:30 and 20:30 --> Later today = 21:00
  • Current time > 20:30 --> Hide later today, show directly tomorrow morning

@AndyScherzinger would that be a more simple solution? :) also cc @jancborchardt

@Pytal
Copy link
Member

Pytal commented Aug 4, 2023

Nice! I would suggest to use the alarm icon for "Set reminder".

👍

For the time options, since they are simply communicating different times, we could keep it simple and use radio buttons like in Mail? That would also make it easy for the "Clear reminder" option -- no need to mention the time. Would that be possible? :)

💡 realized that the radio button model wouldn't actually work here because the computed timestamps are dynamically calculated by time from now while the set reminder is static

I can see a use case where someone is at work and wants to remind themselves of a personal file after they get back. How about a solution between always showing +2h and always hiding after 18:00? Logic:

  • Current time < 17:30 -->Later today = 18:00
  • Current time between 17:30 and 20:30 --> Later today = 21:00
  • Current time > 20:30 --> Hide later today, show directly tomorrow morning

As this is still being discussed could we have a spec for the reminder times and all edge cases to ensure consistency across implementations @jancborchardt @nimishavijay?

@skjnldsv
Copy link
Member

skjnldsv commented Aug 5, 2023

We should simply put it in the 3-dot menu in files. Between "Move or copy" and "Edit locally" would be a good position. The label is "Set a reminder" and it would open a submenu like we do for "More actions" in Mail.

Currently, we have no existing support or API for this @jancborchardt
Adding some kind of submenu for actions is kinda out of scope I would say.
An action is unique and have nothing to do with how it is rendered in the Files UI. The current API is ver clean and simple and I think for the sake of maintenance, we should keep it like that: One action = one entry.

Can you provide a viable alternative that doesn't involve creating a multi-layer Actions menu please?
Would a Modal be good enough? Any other idea?


EDIT: I'm trying to avoid going too technical here. But my technical expertise opinion is that we should not have any kind of submenu in the actions. They are not working nor have been designed like that.

@jancborchardt
Copy link
Member

@Pytal regarding times, we should pick the exact ones that Google is using since it’s sort of a standard – see screenshot in the first post #39181 (comment)

@jancborchardt
Copy link
Member

jancborchardt commented Aug 8, 2023

Notes from the call with @skjnldsv @Antreesy @JohannesGGE @nickvergessen @ChristophWurst @nimishavijay
If I missed anything please add it. :) cc @Pytal @AndyScherzinger also please check.

Spec clarifications

  • "Later today" will be checked with Gmail behavior → see comment below
  • Should be done using the submenu of NcActions like in Mail "Send later" or "More actions", conditional actions list
    • Improvement for components would be a slight left/right animation, vue-transition
  • Menu should be directly closed on picking an option
  • Icons for the dates in the menu are too much, can be removed
  • Detail – the dash needs to be an "en" dash instead of "em": "–"

Known issues to fix in the future

  • Currently reminders are not easily cancelable for other apps (oc_jobs table is too large). For now we only save on menu close and "Back" click.
  • Custom dates are out of scope for now. In the future, for the custom date picker:
    • NcActionsInput with the prop isNativePicker
    • there should be a "Save" button next to the input field
  • Ideally the time is displayed in color-text-maxcontrast and right-aligned, like Google Mail does it (see screenshot in first post)
  • We could use the "Working hours" settings for filling the settings, so that "Tomorrow" would remind you at the beginning of the workday, and "Later today" at the end of the workday, "Next week" Monday at the beginning etc.

@jancborchardt
Copy link
Member

Last clarification @Pytal @Antreesy @JohannesGGE, just tested what Gmail does about the "Later today" (default 18:00) and they seem to just hide it when it’s in less than 1 hour (screenshot is from just now, 17:15). Seems simple enough, let’s do that too.

image

@nickvergessen
Copy link
Member

And we hide "Next week" on Sunday because it's the same as "Tomorrow", right?

@Antreesy
Copy link
Contributor

And we hide "Next week" on Sunday...

And maybe on Saturday as well?

@nickvergessen
Copy link
Member

And maybe on Saturday as well?

No, but "This weekend" on friday

@ChristophWurst
Copy link
Member

Some locales say the week starts with Sunday. Do we then hide it on Saturday already and also use Sunday for Next week?

Ref nextcloud/calendar#384

@jancborchardt
Copy link
Member

@nickvergessen yes, hiding "Next week" on Sunday sounds good.

@ChristophWurst the issue is that doing it based on locale also means "Next week has to be adjusted based on locale. If it's reasonably easy to do then yes let's do it, otherwise out of scope.

@Antreesy
Copy link
Contributor

"Next week has to be adjusted based on locale

It may be not that hard, but "First day of week" is not the same as "First working day of week". I suppose, we're meaning the second option for the next week reminder?

@Pytal Pytal added 4. to release Ready to be released and/or waiting for tests to finish and removed 3. to review Waiting for reviews labels Aug 11, 2023
@Pytal Pytal closed this as completed Aug 11, 2023
@github-project-automation github-project-automation bot moved this from 🏗️ In progress to ☑️ Done in 📁 Files team Aug 11, 2023
@github-project-automation github-project-automation bot moved this from 🏗️ At engineering to 🎉 Done in 🖍 Design team Aug 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4. to release Ready to be released and/or waiting for tests to finish design Design, UI, UX, etc. enhancement
Projects
Archived in project
Archived in project
Development

No branches or pull requests

9 participants