@metamask-previews/announcement-controller 7.1.1-preview-9fa15fd0 → 8.0.0-preview-55f130d1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [8.0.0]
11
+
12
+ ### Changed
13
+
14
+ - **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6384](https://github.com/MetaMask/core/pull/6384))
15
+ - Previously, `AnnouncementController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
16
+ - **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#6384](https://github.com/MetaMask/core/pull/6384))
17
+ - Bump `@metamask/base-controller` from `^8.4.2` to `^9.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
18
+
10
19
  ## [7.1.1]
11
20
 
12
21
  ### Changed
@@ -192,7 +201,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
192
201
 
193
202
  All changes listed after this point were applied to this package following the monorepo conversion.
194
203
 
195
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@7.1.1...HEAD
204
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@8.0.0...HEAD
205
+ [8.0.0]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@7.1.1...@metamask/announcement-controller@8.0.0
196
206
  [7.1.1]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@7.1.0...@metamask/announcement-controller@7.1.1
197
207
  [7.1.0]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@7.0.3...@metamask/announcement-controller@7.1.0
198
208
  [7.0.3]: https://github.com/MetaMask/core/compare/@metamask/announcement-controller@7.0.2...@metamask/announcement-controller@7.0.3
@@ -16,7 +16,7 @@ const metadata = {
16
16
  announcements: {
17
17
  includeInStateLogs: true,
18
18
  persist: true,
19
- anonymous: true,
19
+ includeInDebugSnapshot: true,
20
20
  usedInUi: true,
21
21
  },
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AnnouncementController.cjs","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":";;;;;;;;;AAMA,+DAA2D;AAkD3D,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,QAAQ,GAA+C;IAC3D,aAAa,EAAE;QACb,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAUF;;GAEG;AACH,MAAa,sBAAuB,SAAQ,gCAI3C;IACC;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GAKjB;QACC,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;QAClD,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;;QACzE,uBAAA,IAAI,mFAAkB,MAAtB,IAAI,EAAmB,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAoBD;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBACvD,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnD,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AArED,wDAqEC;gJAlCmB,gBAAiC;IACjD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAA0B,EAAE,EAAE;YACrE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CACxD,YAAY,CAAC,EAAE,CAChB,IAAI,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\n\ntype ViewedAnnouncement = {\n [id: number]: boolean;\n};\n\ntype Announcement = {\n id: number;\n date: string;\n};\n\n/**\n * A map of announcement ids to Announcement objects\n */\nexport type AnnouncementMap = {\n [id: number]: Announcement;\n};\n\ntype StateAnnouncement = Announcement & { isShown: boolean };\n\n/**\n * A map of announcement ids to StateAnnouncement objects\n */\nexport type StateAnnouncementMap = {\n [id: number]: StateAnnouncement;\n};\n\n/**\n * Announcement state will hold all the seen and unseen announcements\n * that are still active\n */\nexport type AnnouncementControllerState = {\n announcements: StateAnnouncementMap;\n};\n\nexport type AnnouncementControllerActions =\n AnnouncementControllerGetStateAction;\nexport type AnnouncementControllerEvents =\n AnnouncementControllerStateChangeEvent;\n\nexport type AnnouncementControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nexport type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nconst controllerName = 'AnnouncementController';\n\nconst defaultState = {\n announcements: {},\n};\n\nconst metadata: StateMetadata<AnnouncementControllerState> = {\n announcements: {\n includeInStateLogs: true,\n persist: true,\n anonymous: true,\n usedInUi: true,\n },\n};\n\nexport type AnnouncementControllerMessenger = RestrictedMessenger<\n typeof controllerName,\n AnnouncementControllerActions,\n AnnouncementControllerEvents,\n never,\n never\n>;\n\n/**\n * Controller for managing in-app announcements.\n */\nexport class AnnouncementController extends BaseController<\n typeof controllerName,\n AnnouncementControllerState,\n AnnouncementControllerMessenger\n> {\n /**\n * Creates a AnnouncementController instance.\n *\n * @param args - The arguments to this function.\n * @param args.messenger - Messenger used to communicate with BaseV2 controller.\n * @param args.state - Initial state to set on this controller.\n * @param args.allAnnouncements - Announcements to be passed through to #addAnnouncements\n */\n constructor({\n messenger,\n state,\n allAnnouncements,\n }: {\n messenger: AnnouncementControllerMessenger;\n state?: AnnouncementControllerState;\n allAnnouncements: AnnouncementMap;\n }) {\n const mergedState = { ...defaultState, ...state };\n super({ messenger, metadata, name: controllerName, state: mergedState });\n this.#addAnnouncements(allAnnouncements);\n }\n\n /**\n * Compares the announcements in state with the announcements from file\n * to check if there are any new announcements\n * if yes, the new announcement will be added to the state with a flag indicating\n * that the announcement is not seen by the user.\n *\n * @param allAnnouncements - all announcements to compare with the announcements from state\n */\n #addAnnouncements(allAnnouncements: AnnouncementMap): void {\n this.update((state) => {\n Object.values(allAnnouncements).forEach((announcement: Announcement) => {\n state.announcements[announcement.id] = state.announcements[\n announcement.id\n ] ?? { ...announcement, isShown: false };\n });\n });\n }\n\n /**\n * Resets the isShown status for all announcements\n */\n resetViewed(): void {\n this.update(({ announcements }) => {\n for (const announcement of Object.values(announcements)) {\n announcement.isShown = false;\n }\n });\n }\n\n /**\n * Updates the status of the status of the specified announcements\n * once it is read by the user.\n *\n * @param viewedIds - The announcement IDs to mark as viewed.\n */\n updateViewed(viewedIds: ViewedAnnouncement): void {\n this.update(({ announcements }) => {\n for (const id of Object.keys(viewedIds).map(Number)) {\n announcements[id].isShown = viewedIds[id];\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"AnnouncementController.cjs","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":";;;;;;;;;AAKA,+DAA2D;AAmD3D,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,QAAQ,GAA+C;IAC3D,aAAa,EAAE;QACb,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,sBAAsB,EAAE,IAAI;QAC5B,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAQF;;GAEG;AACH,MAAa,sBAAuB,SAAQ,gCAI3C;IACC;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GAKjB;QACC,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;QAClD,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;;QACzE,uBAAA,IAAI,mFAAkB,MAAtB,IAAI,EAAmB,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAoBD;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBACvD,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnD,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AArED,wDAqEC;gJAlCmB,gBAAiC;IACjD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAA0B,EAAE,EAAE;YACrE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CACxD,YAAY,CAAC,EAAE,CAChB,IAAI,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\n\ntype ViewedAnnouncement = {\n [id: number]: boolean;\n};\n\ntype Announcement = {\n id: number;\n date: string;\n};\n\n/**\n * A map of announcement ids to Announcement objects\n */\nexport type AnnouncementMap = {\n [id: number]: Announcement;\n};\n\ntype StateAnnouncement = Announcement & { isShown: boolean };\n\n/**\n * A map of announcement ids to StateAnnouncement objects\n */\nexport type StateAnnouncementMap = {\n [id: number]: StateAnnouncement;\n};\n\n/**\n * Announcement state will hold all the seen and unseen announcements\n * that are still active\n */\nexport type AnnouncementControllerState = {\n announcements: StateAnnouncementMap;\n};\n\nexport type AnnouncementControllerActions =\n AnnouncementControllerGetStateAction;\nexport type AnnouncementControllerEvents =\n AnnouncementControllerStateChangeEvent;\n\nexport type AnnouncementControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nexport type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nconst controllerName = 'AnnouncementController';\n\nconst defaultState = {\n announcements: {},\n};\n\nconst metadata: StateMetadata<AnnouncementControllerState> = {\n announcements: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n};\n\nexport type AnnouncementControllerMessenger = Messenger<\n typeof controllerName,\n AnnouncementControllerActions,\n AnnouncementControllerEvents\n>;\n\n/**\n * Controller for managing in-app announcements.\n */\nexport class AnnouncementController extends BaseController<\n typeof controllerName,\n AnnouncementControllerState,\n AnnouncementControllerMessenger\n> {\n /**\n * Creates a AnnouncementController instance.\n *\n * @param args - The arguments to this function.\n * @param args.messenger - Messenger used to communicate with BaseV2 controller.\n * @param args.state - Initial state to set on this controller.\n * @param args.allAnnouncements - Announcements to be passed through to #addAnnouncements\n */\n constructor({\n messenger,\n state,\n allAnnouncements,\n }: {\n messenger: AnnouncementControllerMessenger;\n state?: AnnouncementControllerState;\n allAnnouncements: AnnouncementMap;\n }) {\n const mergedState = { ...defaultState, ...state };\n super({ messenger, metadata, name: controllerName, state: mergedState });\n this.#addAnnouncements(allAnnouncements);\n }\n\n /**\n * Compares the announcements in state with the announcements from file\n * to check if there are any new announcements\n * if yes, the new announcement will be added to the state with a flag indicating\n * that the announcement is not seen by the user.\n *\n * @param allAnnouncements - all announcements to compare with the announcements from state\n */\n #addAnnouncements(allAnnouncements: AnnouncementMap): void {\n this.update((state) => {\n Object.values(allAnnouncements).forEach((announcement: Announcement) => {\n state.announcements[announcement.id] = state.announcements[\n announcement.id\n ] ?? { ...announcement, isShown: false };\n });\n });\n }\n\n /**\n * Resets the isShown status for all announcements\n */\n resetViewed(): void {\n this.update(({ announcements }) => {\n for (const announcement of Object.values(announcements)) {\n announcement.isShown = false;\n }\n });\n }\n\n /**\n * Updates the status of the status of the specified announcements\n * once it is read by the user.\n *\n * @param viewedIds - The announcement IDs to mark as viewed.\n */\n updateViewed(viewedIds: ViewedAnnouncement): void {\n this.update(({ announcements }) => {\n for (const id of Object.keys(viewedIds).map(Number)) {\n announcements[id].isShown = viewedIds[id];\n }\n });\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
- import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedMessenger } from "@metamask/base-controller";
1
+ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
2
2
  import { BaseController } from "@metamask/base-controller";
3
+ import type { Messenger } from "@metamask/messenger";
3
4
  type ViewedAnnouncement = {
4
5
  [id: number]: boolean;
5
6
  };
@@ -34,7 +35,7 @@ export type AnnouncementControllerEvents = AnnouncementControllerStateChangeEven
34
35
  export type AnnouncementControllerGetStateAction = ControllerGetStateAction<typeof controllerName, AnnouncementControllerState>;
35
36
  export type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, AnnouncementControllerState>;
36
37
  declare const controllerName = "AnnouncementController";
37
- export type AnnouncementControllerMessenger = RestrictedMessenger<typeof controllerName, AnnouncementControllerActions, AnnouncementControllerEvents, never, never>;
38
+ export type AnnouncementControllerMessenger = Messenger<typeof controllerName, AnnouncementControllerActions, AnnouncementControllerEvents>;
38
39
  /**
39
40
  * Controller for managing in-app announcements.
40
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AnnouncementController.d.cts","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EAEpB,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,KAAK,kBAAkB,GAAG;IACxB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACvC,oCAAoC,CAAC;AACvC,MAAM,MAAM,4BAA4B,GACtC,sCAAsC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG,wBAAwB,CACzE,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,0BAA0B,CAC7E,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,QAAA,MAAM,cAAc,2BAA2B,CAAC;AAehD,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,CAC/D,OAAO,cAAc,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,KAAK,EACL,KAAK,CACN,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc,CACxD,OAAO,cAAc,EACrB,2BAA2B,EAC3B,+BAA+B,CAChC;;IACC;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,+BAA+B,CAAC;QAC3C,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,gBAAgB,EAAE,eAAe,CAAC;KACnC;IAwBD;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CAOlD"}
1
+ {"version":3,"file":"AnnouncementController.d.cts","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,KAAK,kBAAkB,GAAG;IACxB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACvC,oCAAoC,CAAC;AACvC,MAAM,MAAM,4BAA4B,GACtC,sCAAsC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG,wBAAwB,CACzE,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,0BAA0B,CAC7E,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,QAAA,MAAM,cAAc,2BAA2B,CAAC;AAehD,MAAM,MAAM,+BAA+B,GAAG,SAAS,CACrD,OAAO,cAAc,EACrB,6BAA6B,EAC7B,4BAA4B,CAC7B,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc,CACxD,OAAO,cAAc,EACrB,2BAA2B,EAC3B,+BAA+B,CAChC;;IACC;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,+BAA+B,CAAC;QAC3C,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,gBAAgB,EAAE,eAAe,CAAC;KACnC;IAwBD;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CAOlD"}
@@ -1,5 +1,6 @@
1
- import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedMessenger } from "@metamask/base-controller";
1
+ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
2
2
  import { BaseController } from "@metamask/base-controller";
3
+ import type { Messenger } from "@metamask/messenger";
3
4
  type ViewedAnnouncement = {
4
5
  [id: number]: boolean;
5
6
  };
@@ -34,7 +35,7 @@ export type AnnouncementControllerEvents = AnnouncementControllerStateChangeEven
34
35
  export type AnnouncementControllerGetStateAction = ControllerGetStateAction<typeof controllerName, AnnouncementControllerState>;
35
36
  export type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, AnnouncementControllerState>;
36
37
  declare const controllerName = "AnnouncementController";
37
- export type AnnouncementControllerMessenger = RestrictedMessenger<typeof controllerName, AnnouncementControllerActions, AnnouncementControllerEvents, never, never>;
38
+ export type AnnouncementControllerMessenger = Messenger<typeof controllerName, AnnouncementControllerActions, AnnouncementControllerEvents>;
38
39
  /**
39
40
  * Controller for managing in-app announcements.
40
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AnnouncementController.d.mts","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EAEpB,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,KAAK,kBAAkB,GAAG;IACxB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACvC,oCAAoC,CAAC;AACvC,MAAM,MAAM,4BAA4B,GACtC,sCAAsC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG,wBAAwB,CACzE,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,0BAA0B,CAC7E,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,QAAA,MAAM,cAAc,2BAA2B,CAAC;AAehD,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,CAC/D,OAAO,cAAc,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,KAAK,EACL,KAAK,CACN,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc,CACxD,OAAO,cAAc,EACrB,2BAA2B,EAC3B,+BAA+B,CAChC;;IACC;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,+BAA+B,CAAC;QAC3C,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,gBAAgB,EAAE,eAAe,CAAC;KACnC;IAwBD;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CAOlD"}
1
+ {"version":3,"file":"AnnouncementController.d.mts","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,KAAK,kBAAkB,GAAG;IACxB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACvC,oCAAoC,CAAC;AACvC,MAAM,MAAM,4BAA4B,GACtC,sCAAsC,CAAC;AAEzC,MAAM,MAAM,oCAAoC,GAAG,wBAAwB,CACzE,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,0BAA0B,CAC7E,OAAO,cAAc,EACrB,2BAA2B,CAC5B,CAAC;AAEF,QAAA,MAAM,cAAc,2BAA2B,CAAC;AAehD,MAAM,MAAM,+BAA+B,GAAG,SAAS,CACrD,OAAO,cAAc,EACrB,6BAA6B,EAC7B,4BAA4B,CAC7B,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc,CACxD,OAAO,cAAc,EACrB,2BAA2B,EAC3B,+BAA+B,CAChC;;IACC;;;;;;;OAOG;gBACS,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,+BAA+B,CAAC;QAC3C,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,gBAAgB,EAAE,eAAe,CAAC;KACnC;IAwBD;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CAOlD"}
@@ -13,7 +13,7 @@ const metadata = {
13
13
  announcements: {
14
14
  includeInStateLogs: true,
15
15
  persist: true,
16
- anonymous: true,
16
+ includeInDebugSnapshot: true,
17
17
  usedInUi: true,
18
18
  },
19
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AnnouncementController.mjs","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":";;;;;;AAMA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAkD3D,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,QAAQ,GAA+C;IAC3D,aAAa,EAAE;QACb,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAUF;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAI3C;IACC;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GAKjB;QACC,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;QAClD,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;;QACzE,uBAAA,IAAI,mFAAkB,MAAtB,IAAI,EAAmB,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAoBD;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBACvD,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnD,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;gJAlCmB,gBAAiC;IACjD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAA0B,EAAE,EAAE;YACrE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CACxD,YAAY,CAAC,EAAE,CAChB,IAAI,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\n\ntype ViewedAnnouncement = {\n [id: number]: boolean;\n};\n\ntype Announcement = {\n id: number;\n date: string;\n};\n\n/**\n * A map of announcement ids to Announcement objects\n */\nexport type AnnouncementMap = {\n [id: number]: Announcement;\n};\n\ntype StateAnnouncement = Announcement & { isShown: boolean };\n\n/**\n * A map of announcement ids to StateAnnouncement objects\n */\nexport type StateAnnouncementMap = {\n [id: number]: StateAnnouncement;\n};\n\n/**\n * Announcement state will hold all the seen and unseen announcements\n * that are still active\n */\nexport type AnnouncementControllerState = {\n announcements: StateAnnouncementMap;\n};\n\nexport type AnnouncementControllerActions =\n AnnouncementControllerGetStateAction;\nexport type AnnouncementControllerEvents =\n AnnouncementControllerStateChangeEvent;\n\nexport type AnnouncementControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nexport type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nconst controllerName = 'AnnouncementController';\n\nconst defaultState = {\n announcements: {},\n};\n\nconst metadata: StateMetadata<AnnouncementControllerState> = {\n announcements: {\n includeInStateLogs: true,\n persist: true,\n anonymous: true,\n usedInUi: true,\n },\n};\n\nexport type AnnouncementControllerMessenger = RestrictedMessenger<\n typeof controllerName,\n AnnouncementControllerActions,\n AnnouncementControllerEvents,\n never,\n never\n>;\n\n/**\n * Controller for managing in-app announcements.\n */\nexport class AnnouncementController extends BaseController<\n typeof controllerName,\n AnnouncementControllerState,\n AnnouncementControllerMessenger\n> {\n /**\n * Creates a AnnouncementController instance.\n *\n * @param args - The arguments to this function.\n * @param args.messenger - Messenger used to communicate with BaseV2 controller.\n * @param args.state - Initial state to set on this controller.\n * @param args.allAnnouncements - Announcements to be passed through to #addAnnouncements\n */\n constructor({\n messenger,\n state,\n allAnnouncements,\n }: {\n messenger: AnnouncementControllerMessenger;\n state?: AnnouncementControllerState;\n allAnnouncements: AnnouncementMap;\n }) {\n const mergedState = { ...defaultState, ...state };\n super({ messenger, metadata, name: controllerName, state: mergedState });\n this.#addAnnouncements(allAnnouncements);\n }\n\n /**\n * Compares the announcements in state with the announcements from file\n * to check if there are any new announcements\n * if yes, the new announcement will be added to the state with a flag indicating\n * that the announcement is not seen by the user.\n *\n * @param allAnnouncements - all announcements to compare with the announcements from state\n */\n #addAnnouncements(allAnnouncements: AnnouncementMap): void {\n this.update((state) => {\n Object.values(allAnnouncements).forEach((announcement: Announcement) => {\n state.announcements[announcement.id] = state.announcements[\n announcement.id\n ] ?? { ...announcement, isShown: false };\n });\n });\n }\n\n /**\n * Resets the isShown status for all announcements\n */\n resetViewed(): void {\n this.update(({ announcements }) => {\n for (const announcement of Object.values(announcements)) {\n announcement.isShown = false;\n }\n });\n }\n\n /**\n * Updates the status of the status of the specified announcements\n * once it is read by the user.\n *\n * @param viewedIds - The announcement IDs to mark as viewed.\n */\n updateViewed(viewedIds: ViewedAnnouncement): void {\n this.update(({ announcements }) => {\n for (const id of Object.keys(viewedIds).map(Number)) {\n announcements[id].isShown = viewedIds[id];\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"AnnouncementController.mjs","sourceRoot":"","sources":["../src/AnnouncementController.ts"],"names":[],"mappings":";;;;;;AAKA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAmD3D,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,QAAQ,GAA+C;IAC3D,aAAa,EAAE;QACb,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,IAAI;QACb,sBAAsB,EAAE,IAAI;QAC5B,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAQF;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAI3C;IACC;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,KAAK,EACL,gBAAgB,GAKjB;QACC,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;QAClD,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;;QACzE,uBAAA,IAAI,mFAAkB,MAAtB,IAAI,EAAmB,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAoBD;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBACvD,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YAChC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnD,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;gJAlCmB,gBAAiC;IACjD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAA0B,EAAE,EAAE;YACrE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CACxD,YAAY,CAAC,EAAE,CAChB,IAAI,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { Messenger } from '@metamask/messenger';\n\ntype ViewedAnnouncement = {\n [id: number]: boolean;\n};\n\ntype Announcement = {\n id: number;\n date: string;\n};\n\n/**\n * A map of announcement ids to Announcement objects\n */\nexport type AnnouncementMap = {\n [id: number]: Announcement;\n};\n\ntype StateAnnouncement = Announcement & { isShown: boolean };\n\n/**\n * A map of announcement ids to StateAnnouncement objects\n */\nexport type StateAnnouncementMap = {\n [id: number]: StateAnnouncement;\n};\n\n/**\n * Announcement state will hold all the seen and unseen announcements\n * that are still active\n */\nexport type AnnouncementControllerState = {\n announcements: StateAnnouncementMap;\n};\n\nexport type AnnouncementControllerActions =\n AnnouncementControllerGetStateAction;\nexport type AnnouncementControllerEvents =\n AnnouncementControllerStateChangeEvent;\n\nexport type AnnouncementControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nexport type AnnouncementControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AnnouncementControllerState\n>;\n\nconst controllerName = 'AnnouncementController';\n\nconst defaultState = {\n announcements: {},\n};\n\nconst metadata: StateMetadata<AnnouncementControllerState> = {\n announcements: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n};\n\nexport type AnnouncementControllerMessenger = Messenger<\n typeof controllerName,\n AnnouncementControllerActions,\n AnnouncementControllerEvents\n>;\n\n/**\n * Controller for managing in-app announcements.\n */\nexport class AnnouncementController extends BaseController<\n typeof controllerName,\n AnnouncementControllerState,\n AnnouncementControllerMessenger\n> {\n /**\n * Creates a AnnouncementController instance.\n *\n * @param args - The arguments to this function.\n * @param args.messenger - Messenger used to communicate with BaseV2 controller.\n * @param args.state - Initial state to set on this controller.\n * @param args.allAnnouncements - Announcements to be passed through to #addAnnouncements\n */\n constructor({\n messenger,\n state,\n allAnnouncements,\n }: {\n messenger: AnnouncementControllerMessenger;\n state?: AnnouncementControllerState;\n allAnnouncements: AnnouncementMap;\n }) {\n const mergedState = { ...defaultState, ...state };\n super({ messenger, metadata, name: controllerName, state: mergedState });\n this.#addAnnouncements(allAnnouncements);\n }\n\n /**\n * Compares the announcements in state with the announcements from file\n * to check if there are any new announcements\n * if yes, the new announcement will be added to the state with a flag indicating\n * that the announcement is not seen by the user.\n *\n * @param allAnnouncements - all announcements to compare with the announcements from state\n */\n #addAnnouncements(allAnnouncements: AnnouncementMap): void {\n this.update((state) => {\n Object.values(allAnnouncements).forEach((announcement: Announcement) => {\n state.announcements[announcement.id] = state.announcements[\n announcement.id\n ] ?? { ...announcement, isShown: false };\n });\n });\n }\n\n /**\n * Resets the isShown status for all announcements\n */\n resetViewed(): void {\n this.update(({ announcements }) => {\n for (const announcement of Object.values(announcements)) {\n announcement.isShown = false;\n }\n });\n }\n\n /**\n * Updates the status of the status of the specified announcements\n * once it is read by the user.\n *\n * @param viewedIds - The announcement IDs to mark as viewed.\n */\n updateViewed(viewedIds: ViewedAnnouncement): void {\n this.update(({ announcements }) => {\n for (const id of Object.keys(viewedIds).map(Number)) {\n announcements[id].isShown = viewedIds[id];\n }\n });\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/announcement-controller",
3
- "version": "7.1.1-preview-9fa15fd0",
3
+ "version": "8.0.0-preview-55f130d1",
4
4
  "description": "Manages in-app announcements",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -47,7 +47,8 @@
47
47
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
48
48
  },
49
49
  "dependencies": {
50
- "@metamask/base-controller": "^8.4.2"
50
+ "@metamask/base-controller": "^9.0.0",
51
+ "@metamask/messenger": "^0.3.0"
51
52
  },
52
53
  "devDependencies": {
53
54
  "@metamask/auto-changelog": "^3.4.4",