mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 12:51:09 +02:00
Differential Revision: https://phabricator.services.mozilla.com/D7916 --HG-- rename : browser/components/newtab/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.schema.json => browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.schema.json extra : moz-landing-system : lando
125 lines
4.3 KiB
Markdown
125 lines
4.3 KiB
Markdown
# Snippets in ActivityStream
|
|
|
|
## `gSnippetsMap`
|
|
|
|
`gSnippetsMap` is available to all snippet templates and has methods that a
|
|
regular `Map` has: `set`, `get`, `delete`, `clear`, etc.
|
|
|
|
If you don't care about the completion of the transaction, you may simply use these
|
|
methods synchronously:
|
|
|
|
```js
|
|
function setFoo() {
|
|
gSnippetsMap.set("foo", 123);
|
|
return gSnippetsMap.get("foo"); // returns 123
|
|
}
|
|
```
|
|
|
|
However, unlike the previous version of snippets, `set`, `delete`, and `clear`
|
|
all return a `Promise` that will resolve or reject when the `indexedDB` transaction
|
|
is complete. For example:
|
|
|
|
```js
|
|
async function setFoo() {
|
|
await gSnippetsMap.set("foo", 123);
|
|
return gSnippetsMap.get("foo");
|
|
}
|
|
```
|
|
|
|
### Methods on gSnippetsMap
|
|
|
|
`.blockList`: (Array) An array of snippet IDs that have been blocked by the users, or an empty array if none have been blocked.
|
|
|
|
`.blockSnippetById(id)`: (func) A function that adds an id to a blockList and returns
|
|
a Promise that resolves when the blockList has been written to indexedDB.
|
|
|
|
`.showFirefoxAccounts()`: (func) A function that opens the Firefox Accounts signup page
|
|
(specifically `about:accounts?action=signup&entrypoint=snippets`)
|
|
|
|
`.disableOnboarding()`: (func) DEPRECATED - A function that disables onboarding for future new tabs (until Firefox restarts).
|
|
You should ensure `gSnippetsMap.get("appData.onboardingFinished")` is false before calling this. Note that this
|
|
does not hide onboarding notifications on the **current** page, since that would be a disruptive user experience.
|
|
|
|
`.getTotalBookmarksCount()`: (func) An async function that resolves with an integer representing the number of
|
|
bookmarks a user has (including default bookmarks). Note that is value is only updated once per day or when a
|
|
a user restarts the browser.
|
|
|
|
`.getAddonsInfo()`:( func) An async function that resolves with an object `{isFullData: (bool), addons: (obj)}`.
|
|
Note that at startup, we are sometimes unable to provide full data due to performance constraits (`.isFullData` will be `false`).
|
|
E.g.
|
|
|
|
```js
|
|
{
|
|
isFullData: true,
|
|
addons: {
|
|
// This is the ID of the addon
|
|
"someaddon@mozilla.org": {
|
|
type: "extension",
|
|
isSystem: false,
|
|
isWebExtension: true,
|
|
version: "29.0.0"
|
|
|
|
// The following properties may not be available when the browser starts up
|
|
name: "Firefox Screenshots",
|
|
userDisabled: false,
|
|
installDate: Date 2018-02-27T19:33:33.440Z,
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Expected values in gSnippetsMap
|
|
|
|
Note that names and functionality of values in v4 snippets have been preserved
|
|
where possible. You can access each value by calling `gSnippetsMap.get(id)`. For example,
|
|
to find out if a user has a Firefox account, you would check `gSnippetsMap.get("appData.fxaccount")`.
|
|
|
|
`snippets-cached-version`: (int) The version number of the snippets cached in `snippets`.
|
|
|
|
`snippets-last-update`: (int) The last time snippets were updated.
|
|
|
|
`snippets`: (str) The cached payload of the response from the snippets server.
|
|
|
|
`appData.snippetsURL`: (str) The URL at from which snippets are fetched
|
|
|
|
`appData.version`: (int) The current version of snippets
|
|
|
|
`appData.profileCreatedWeeksAgo`: (int) The date the user's profile was created
|
|
|
|
`appData.profileResetWeeksAgo`: (int) The date the user's profile was reset. `null` if the profile hasn't been reset.
|
|
|
|
`appData.telemetryEnabled`: (bool) Is telemetry enabled for the user?
|
|
|
|
`appData.onboardingFinished`: (bool) DEPRECATED - Has the onboarding tour been completed?
|
|
|
|
`appData.fxaccount`: (bool) Does the user have a Firefox account?
|
|
|
|
`appData.selectedSearchEngine`: (obj) An object containing a array of search
|
|
engines and a search engine identifier for the currently selected search engine.
|
|
For example:
|
|
|
|
```js
|
|
{
|
|
engines: ["searchEngine-google", "searchEngine-yahoo", "searchEngine-bing"],
|
|
searchEngineIdentifier : "google"
|
|
}
|
|
```
|
|
|
|
`appData.defaultBrowser`: (bool) Is Firefox the user's default browser?
|
|
If we could not determine the default browser, this value is `null`. Note that
|
|
currently this value is only checked once when the browser is initialized.
|
|
|
|
`appData.isDevtoolsUser`: (bool) Has the user ever used devtools?
|
|
|
|
## Events
|
|
|
|
ActivityStream dispatches custom DOM events on the window to allow snippets
|
|
providers to respond to ActivityStream snippets events.
|
|
|
|
### `Snippets:Enabled`
|
|
|
|
Fired when the user chooses to enable snippets.
|
|
|
|
### `Snippets:Disabled`
|
|
|
|
Fired when the user chooses to disable snippets.
|