To run the simpliest dapplet, follow these steps.
1. Clone Dapplet Template repository locally.
git clone git@github.com:dapplets/dapplet-template.git
The icon src/icon19.png
is used for the injected button in source code src/index.ts
.
The icon src/icon64.png
is used for display in the store of Dapplets. The link to this icon is defined in dapplet.json
manifest.
The default values of settings are defined in config/default.json
file.
The schema follows the rules defined in the http://json-schema.org/.
The Dapplet settings UI is generated by react-jsonschema-form.
There are three environments:
dev
- used when a module is loaded from development server;test
- used when a module is loaded from Test Dapplet Registry;prod
- used when a module is loaded from Production Dapplet Registry;
Dependencies are defined in the dependencies
section of the dapplet.json
file and are injected in the dapplet's index.ts
file.
The Twitter adapter is used by default.
The list of our adapters are available now:
- twitter-adapter.dapplet-base.eth - site-specific adapter for Twitter;
- instagram-adapter.dapplet-base.eth - site-specific adapter for Instagram;
- identity-adapter.dapplet-base.eth - virtual adapter (interface), which is an abstract of two adapters above;
- common-adapter.dapplet-base.eth - viewport adapter is universal adapter which contains generic insertion points and is compatible with any web-sites.
See for more here.
ContextId
is the identifier of a context to which your module is bound. This is usually the same as the name of an adapter you are using. It may be:
- the name of an adapter you depend on (e.g.
twitter-adapter.dapplet-base.eth
); - the domain name of a website to which you are creting a dapplet (e.g.
twitter.com
); - the identifier of a dynamic context (e.g.
twitter.com/1346093004537425927
).
8. Specify the argument of @Inject
decorator with chosen adapter in the /src/index.ts
module and add method activate()
with the simple dapplet code.
import {} from '@dapplets/dapplet-extension';
import EXAMPLE_IMG from './icons/icon19.png';
@Injectable
export default class TwitterFeature {
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
@Inject('twitter-adapter.dapplet-base.eth') public adapter: any;
activate() {
const { button } = this.adapter.exports;
this.adapter.attachConfig({
POST_SOUTH: [
button({
initial: 'DEFAULT',
DEFAULT: {
label: 'Injected Button',
img: EXAMPLE_IMG,
exec: () => alert('Hello, World!'),
},
}),
],
});
}
}
9. Install the Dapplet Extension for you Chrome browser (if not installed) - follow the Installation steps.
npm i
npm start
You will see a message like that:
rollup v2.38.3
bundles src/index.ts → lib\index.js...
Current registry address: http://localhost:3001/dapplet.json
created lib\index.js in 783ms
[2021-02-01 13:58:36] waiting for changes...
The address http://localhost:3001/dapplet.json is a link to your dapplet manifest file. Copy it to clipboard.
Paste URL to Developer tab of Dapplet Extension's popup and click Add.
You will see your module in the list of development module. Here you can start deployment process.