128 lines
4.7 KiB
Markdown
128 lines
4.7 KiB
Markdown
# Commandes Tauri
|
|
|
|
Le backend Rust expose **8 commandes** au frontend, enregistrées dans `lib.rs` via
|
|
`generate_handler![]`. Le frontend les appelle avec
|
|
`window.__TAURI__.core.invoke('<nom>', { <args> })`.
|
|
|
|
Cette page sert de référence : signature, arguments, valeur de retour et comportement de
|
|
chaque commande.
|
|
|
|
## Rendu Markdown
|
|
|
|
### `render_markdown`
|
|
```
|
|
render_markdown(content: String) -> String
|
|
```
|
|
- **Args** : `content` — Markdown brut.
|
|
- **Retour** : HTML.
|
|
- **Comportement** : rendu via `ComrakPreviewRenderer` (sans extensions, aperçu rapide).
|
|
- **Frontend** : `services/markdown.js`.
|
|
|
|
### `convert_file`
|
|
```
|
|
convert_file(path: String) -> Result<String, String>
|
|
```
|
|
- **Args** : `path` — chemin absolu d'un fichier `.md`.
|
|
- **Retour** : `Ok(html)` ou `Err(message)`.
|
|
- **Comportement** : lit le fichier puis le rend via `ComrakRenderer` (toutes les extensions
|
|
activées : tables, strikethrough, autolink, tasklist + coloration syntaxique).
|
|
- **Frontend** : `services/markdown.js`. C'est la commande utilisée pour afficher un document
|
|
dans le lecteur.
|
|
|
|
### `get_syntax_highlight_css`
|
|
```
|
|
get_syntax_highlight_css() -> String
|
|
```
|
|
- **Args** : aucun.
|
|
- **Retour** : feuille CSS de coloration syntaxique.
|
|
- **Comportement** : génère le CSS du thème `syntect` `base16-ocean.dark`.
|
|
|
|
## Fichiers
|
|
|
|
### `list_md_files`
|
|
```
|
|
list_md_files(dir: String) -> Result<Vec<String>, String>
|
|
```
|
|
- **Args** : `dir` — chemin d'un répertoire.
|
|
- **Retour** : `Ok([chemins…])` (triés alphabétiquement) ou `Err(message)`.
|
|
- **Comportement** : parcourt le répertoire **récursivement**, ignore les fichiers/dossiers
|
|
cachés (commençant par `.`), ne retient que les `.md`.
|
|
- **Frontend** : `services/files.js`.
|
|
|
|
## Surveillance de fichiers (watch)
|
|
|
|
> Ces commandes sont implémentées et fonctionnelles côté backend, mais **l'interface ne les
|
|
> appelle pas encore**. Le rechargement automatique n'est donc pas actif. Voir
|
|
> [Fonctionnalités](../1-fonctionnel/1.2-Fonctionnalites.md#fonctionnalité-présente-mais-non-branchée).
|
|
|
|
### `start_watch`
|
|
```
|
|
start_watch(path: String) -> Result<(), String>
|
|
```
|
|
- **Args** : `path` — fichier ou répertoire à surveiller.
|
|
- **Comportement** :
|
|
- arrête le watcher précédent (un seul actif à la fois, stocké dans `WatcherState`) ;
|
|
- surveille en mode récursif si `path` est un répertoire, non récursif si c'est un
|
|
fichier ;
|
|
- lance une boucle de **débounce de 80 ms** qui ne retient que les fichiers `.md` non
|
|
cachés, et émet l'événement Tauri **`file-changed`** avec un payload `{ path }`.
|
|
- **Frontend** : `services/watcher.js` (`startWatch`).
|
|
|
|
### `stop_watch`
|
|
```
|
|
stop_watch() -> ()
|
|
```
|
|
- **Comportement** : arrête le watcher actif (le supprime de `WatcherState`, ce qui termine
|
|
le thread de surveillance).
|
|
- **Frontend** : `services/watcher.js` (`stopWatch`).
|
|
|
|
### Événement `file-changed`
|
|
- Émis par le backend pendant la surveillance.
|
|
- Payload : `{ path: String }` — chemin du fichier modifié.
|
|
- Écoutable côté frontend via
|
|
`window.__TAURI__.event.listen('file-changed', callback)` (`onFileChanged`).
|
|
- **Consommation** : `router.js` enregistre le listener au démarrage (`initWatcher`) et,
|
|
à chaque événement, recharge le document affiché s'il correspond au chemin modifié et
|
|
rafraîchit la sidebar si l'arborescence `.md` du dossier surveillé a changé. La
|
|
surveillance est démarrée dans `openPath` (via `startWatch`) et arrêtée dans `showHome`
|
|
(via `stopWatch`).
|
|
|
|
## Thèmes
|
|
|
|
### `list_themes`
|
|
```
|
|
list_themes() -> Vec<ThemeDto> // ThemeDto { id: String, label: String }
|
|
```
|
|
- **Args** : aucun.
|
|
- **Retour** : les 6 thèmes (`default`, `dark`, `sepia`, `large-text`, `emerald`,
|
|
`shell-indigo`) avec leur libellé.
|
|
- **Frontend** : `services/themes.js`.
|
|
|
|
### `get_theme_css`
|
|
```
|
|
get_theme_css(id: String) -> Option<String>
|
|
```
|
|
- **Args** : `id` — identifiant du thème.
|
|
- **Retour** : le CSS du thème (`Some`) ou `None` si l'identifiant est inconnu.
|
|
- **Comportement** : le CSS est intégré au binaire (`include_str!` sur
|
|
`resources/themes/<id>.css`).
|
|
- **Frontend** : `services/themes.js`.
|
|
|
|
## Récapitulatif
|
|
|
|
| Commande | Signature | Retour |
|
|
|---|---|---|
|
|
| `render_markdown` | `(content: String)` | `String` |
|
|
| `convert_file` | `(path: String)` | `Result<String, String>` |
|
|
| `get_syntax_highlight_css` | `()` | `String` |
|
|
| `list_md_files` | `(dir: String)` | `Result<Vec<String>, String>` |
|
|
| `start_watch` | `(path: String)` | `Result<(), String>` |
|
|
| `stop_watch` | `()` | `()` |
|
|
| `list_themes` | `()` | `Vec<ThemeDto>` |
|
|
| `get_theme_css` | `(id: String)` | `Option<String>` |
|
|
|
|
## Voir aussi
|
|
|
|
- [Architecture](2.1-Architecture.md)
|
|
- [Thèmes et personnalisation](../1-fonctionnel/1.4-Themes-et-personnalisation.md)
|