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

[FIX] Notificiation: set a default notification store #4188

Open
wants to merge 1 commit into
base: saas-17.2
Choose a base branch
from

Conversation

rrahir
Copy link
Collaborator

@rrahir rrahir commented May 8, 2024

Following the introduction of stores, the minimal setup has evolved as it requires to instanciate a some stores before the creation of a spreadsheet app. The documentation was not updated accordingly.

More specifically, the only store that we required to instantiate manually was the NotificationStore and we had to add it to the App env as well. These last step are a pain for developpers that only want to set a quick and minimal integration.

This commit sets default notification methods (raiseError, notifyUser, askConfirmation) which can be updated by calling NotificationStore.updateNotificationCallbacks.

Task: 3919166

Description:

description of this task, what is implemented and why it is implemented that way.

Task: : 3919166

review checklist

  • feature is organized in plugin, or UI components
  • support of duplicate sheet (deep copy)
  • in model/core: ranges are Range object, and can be adapted (adaptRanges)
  • in model/UI: ranges are strings (to show the user)
  • undo-able commands (uses this.history.update)
  • multiuser-able commands (has inverse commands and transformations where needed)
  • new/updated/removed commands are documented
  • exportable in excel
  • translations (_t("qmsdf %s", abc))
  • unit tested
  • clean commented code
  • track breaking changes
  • doc is rebuild (npm run doc)
  • status is correct in Odoo

@robodoo
Copy link
Collaborator

robodoo commented May 8, 2024

rrahir added a commit to odoo-dev/odoo that referenced this pull request May 9, 2024
Adapt the setup of the notification override following odoo/o-spreadsheet#4188

Task-3919166
@rrahir rrahir force-pushed the saas-17.2-min-integration-rar branch from ef3f20c to 8bcaeb7 Compare May 9, 2024 11:29
@rrahir rrahir force-pushed the saas-17.2-min-integration-rar branch from 8bcaeb7 to c83bc22 Compare May 11, 2024 15:41
Copy link
Contributor

@hokolomopo hokolomopo left a comment

Choose a reason for hiding this comment

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

This seems like a very good step in the right direction 😊

src/stores/notification_store.ts Outdated Show resolved Hide resolved
doc/integrating/integration.md Outdated Show resolved Hide resolved
src/stores/notification_store.ts Outdated Show resolved Hide resolved
@rrahir rrahir force-pushed the saas-17.2-min-integration-rar branch 9 times, most recently from 2a26177 to eecbebc Compare May 23, 2024 12:59
rrahir added a commit to odoo-dev/odoo that referenced this pull request May 23, 2024
Adapt the setup of the notification override following odoo/o-spreadsheet#4188

Task-3919166
Copy link
Contributor

@hokolomopo hokolomopo left a comment

Choose a reason for hiding this comment

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

Needs a small rebase 🙂

**optional**:

- `notifyUser`
A function used to notify the user. It supports several levels of severity as well as a sticky behaviour.
Copy link
Contributor

Choose a reason for hiding this comment

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

seems strange to say the it supports "several levels of severity as well as a sticky behaviour" since the default one only does a window.alert with no nuanced behaviour.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

the API has to support it.

Comment on lines -22 to -24
notifyUser: (notification: InformationNotification) => any;
raiseError: (text: string, callback?: () => void) => any;
askConfirmation: (content: string, confirm: () => any, cancel?: () => any) => any;
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we really want to remove these methods from the env ? Leaving them in the SpreadsheetChildEnv doesn't cost much, and makes interacting with them a bit less annoying.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@VincentSchippefilt disagreed on that point and I don't have any strong opinion on this. The bad bard is that is had to become

 notifyUser: (notification: InformationNotification) => this.notificationStore.notifyUser(notification);

Everything we put in the env is set in stone as we pass direct references. If we want the notifications, or the model to act as actual props, we should have (nearly) every entry onf the env being dynamic references and not static or binded as we have today.

Following the introduction of stores, the minimal setup has evolved as
it requires to instanciate a some stores before the creation of a
spreadsheet app. The documentation was not updated accordingly.

More specifically, the only store that we required to instantiate
manually was the `NotificationStore` and we had to add it to the App env
as well. These last step are a pain for developpers that only want to
set a quick and minimal integration.

This commit sets default notification methods (raiseError, notifyUser,
askConfirmation) which can either be passed as props to a `Spreadsheet`
component and/or be set by invoking the `NotificationStore`.

Task: 3919166
@rrahir rrahir force-pushed the saas-17.2-min-integration-rar branch from eecbebc to c0dfe75 Compare May 28, 2024 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants