refine Webxdc documentation

This commit is contained in:
B. Petersen
2022-02-02 09:58:21 +01:00
parent 24e749a2c9
commit 5b16a85493
4 changed files with 26 additions and 24 deletions

View File

@@ -3699,19 +3699,21 @@ char* dc_msg_get_webxdc_blob (const dc_msg_t* msg, const char*
/**
* Get info from a webxdc message, in JSON format.
* Get info from a Webxdc extension, in JSON format.
* Messages are a Webxdx extensions if dc_msg_get_viewtype() returns @ref DC_MSG_WEBXDC.
*
* The returned JSON string has the following key/values:
*
* - name: The name of the app.
* - name: The name of the Webxdc extension.
* Defaults to the filename if not set in the manifest.
* - icon: App icon file name.
* - icon: Icon file name.
* Defaults to an standard icon if nothing is set in the manifest.
* To get the file, use dc_msg_get_webxdc_blob().
* App icons should should be square,
* Webxdc extension icons should should be square,
* the implementations will add round corners etc. as needed.
* - summary: short string describing the state of the app,
* - summary: Short string describing the state of the Webxdc extension,
* sth. as "2 votes", "Highscore: 123",
* can be changed by the apps and defaults to an empty string.
* can be changed by the Webxdc extensions and defaults to an empty string.
*
* @memberof dc_msg_t
* @param msg The webxdc instance.
@@ -3973,9 +3975,9 @@ int dc_msg_is_forwarded (const dc_msg_t* msg);
* These messages are typically shown in the center of the chat view,
* dc_msg_get_text() returns a descriptive text about what is going on.
*
* For informational messages created by Webxdc apps,
* For informational messages created by Webxdc extensions,
* dc_msg_get_parent() usually returns the Webxdc instance;
* UIs can use that to scroll to the Webxdc app when the info is tapped.
* UIs can use that to scroll to the Webxdc extension when the info is tapped.
*
* There is no need to perform any action when seeing such a message - this is already done by the core.
*
@@ -5602,11 +5604,11 @@ void dc_event_unref(dc_event_t* event);
/**
* webxdc status update received.
* Webxdc status update received.
* To get the received status update, use dc_get_webxdc_status_updates().
* To send status updates, use dc_send_webxdc_status_update().
*
* Note, that you do not get events that arrive when the app is not running;
* Note, that you do not get events that arrive when the Webxdc extension is not running;
* instead, you can use dc_get_webxdc_status_updates() to get all status updates
* and catch up that way.
*

View File

@@ -2,11 +2,11 @@
## Webxdc File Format
- a **Webxdc app** is a **ZIP-file** with the extension `.xdc`
- a **Webxdc extension** is a **ZIP-file** with the suffix `.xdc`
- the ZIP-file must use the default compression methods as of RFC 1950,
this is "Deflate" or "Store"
- the ZIP-file must contain at least the file `index.html`
- if the Webxdc app is started, `index.html` is opened in a restricted webview
- if the Webxdc extension is tapped, `index.html` is opened in a restricted webview
that allow accessing resources only from the ZIP-file
@@ -26,7 +26,7 @@ no need to add `webxdc.js` to your ZIP-file):
window.webxdc.sendUpdate(update, descr);
```
Webxdc apps are usually shared in a chat and run independently on each peer.
Webxdc extensions are usually shared in a chat and run independently on each peer.
To get a shared state, the peers use `sendUpdate()` to send updates to each other.
- `update`: an object with the following fields:
@@ -35,7 +35,7 @@ To get a shared state, the peers use `sendUpdate()` to send updates to each othe
eg. "Alice voted" or "Bob scored 123 in MyGame";
usually only one line of text is shown,
use this option sparingly to not spam the chat.
- `update.summary`: optional, short text, shown beside app icon;
- `update.summary`: optional, short text, shown beside extension icon;
it is recommended to use some aggregated value, eg. "8 votes", "Highscore: 123"
- `descr`: short, human-readable description what this update is about.
@@ -72,9 +72,9 @@ The callback is called for updates sent by you or other peers.
updates = await window.webxdc.getAllUpdates();
```
In case your Webxdc was just started,
In case your Webxdc extension was just opened,
you may want to reconstruct the state from the last run -
and also incorporate updates that may have arrived while the app was not running.
and also incorporate updates that may have arrived while the extension was not running.
- `updates`: All previous updates in an array,
eg. `[{payload: "foo"},{payload: "bar"}]`
@@ -120,17 +120,17 @@ some basic information are read and used from there.
the `manifest.toml` has the following format
```toml
name = "My App Name"
name = "My Extension Name"
```
- **name** - The name of the app.
If no name is set or if there is no manifest, the filename is used as the app name.
- **name** - The name of the extension.
If no name is set or if there is no manifest, the filename is used as the extension name.
## App Icon
## Extension Icon
If the ZIP-root contains an `icon.png` or `icon.jpg`,
these files are used as the icon for the app.
these files are used as the icon for the extension.
The icon should be a square at reasonable width/height;
round corners etc. will be added by the implementations as needed.
If no icon is set, a default icon will be used.
@@ -172,7 +172,7 @@ The following example shows an input field and every input is show on all peers
[Webxdc Development Tool](https://github.com/deltachat/webxdc-dev)
offers an **Webxdc Simulator** that can be used in many browsers without any installation needed.
You can also use that repository as a template for your own app -
You can also use that repository as a template for your own extension -
just clone and start adapting things to your need.

View File

@@ -1268,7 +1268,7 @@ sth_for_the = "future""#
.await?;
chat_id.set_draft(&t, Some(&mut instance)).await?;
let info = instance.get_webxdc_info(&t).await?;
assert_eq!(info.name, "nice app!");
assert_eq!(info.name, "nice extension!");
assert_eq!(info.icon, WEBXDC_DEFAULT_ICON.to_string());
let mut instance = create_webxdc_instance(
@@ -1531,7 +1531,7 @@ sth_for_the = "future""#
let chatlist = Chatlist::try_load(&t, 0, None, None).await?;
assert_eq!(chatlist.len(), 1);
let summary = chatlist.get_summary(&t, 0, None).await?;
assert_eq!(summary.text, "nice app!".to_string());
assert_eq!(summary.text, "nice extension!".to_string());
Ok(())
}