summaryrefslogtreecommitdiff
path: root/README.md
blob: 18be98cd95736637164ae9b9ef9566f5a327db1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# sailfish-account-mastodon

Sailfish OS account integration for Mastodon.

## Repository Components

### `common/`
- Shared C++ library code used by multiple plugins.
- Includes socialcache-backed storage for Mastodon posts and shared Mastodon auth helpers.

### `settings/`
- Sailfish Accounts provider, service definitions, and account UI.
- OAuth2 (`web_server`) account flow with per-instance Mastodon app registration.
- Translations:
  - QML translation-loader module at `/usr/lib*/qt5/qml/com/jolla/settings/accounts/mastodon/` loads `settings-accounts-mastodon` catalogs for `qsTrId` strings.
  - Engineering English catalog: `/usr/share/translations/settings-accounts-mastodon_eng_en.qm`
  - Translation source catalog: `/usr/share/translations/source/settings-accounts-mastodon.ts`
  - Provider/service metadata uses `<translations>/usr/share/translations/settings-accounts-mastodon</translations>` for metadata string translation paths.
- Services:
  - `mastodon-microblog`: sync service for posts and notifications.
  - `mastodon-sharing`: Transfer Engine sharing service.

### `buteo-plugins/`
- Buteo sync plugins and shared social sync framework code.
- Includes:
  - `buteo-sync-plugin-mastodon-posts`
  - `buteo-sync-plugin-mastodon-notifications`
- Installs Buteo client profile and sync profile XML files.

### `eventsview-plugins/`
- Events view extension for Mastodon posts.
- Includes delegate/feed item QML and `MastodonPostsModel`.

### `transferengine-plugins/`
- Transfer Engine integration for Mastodon image sharing.
- `mastodonshareplugin/`: sharing method discovery + metadata.
- `mastodontransferplugin/`: media upload + status creation.

### `icons/`
- Mastodon SVG assets and `sailfish-svg2png` conversion setup.
- Uses canonical icon names only:
  - `icons/icon-l-mastodon`
### `rpm/`
- Packaging for all modules in `rpm/sailfish-account-mastodon.spec`.
- Packages:
  - `sailfish-account-mastodon` (all runtime components)
  - `sailfish-account-mastodon-ts-devel` (translation source files only)
- `%qmake5_install` already installs icon outputs from the `icons/` subproject; avoid a second explicit `icons` `make install` in `%install`.
- Translation source `.ts` files are packaged in `sailfish-account-mastodon-ts-devel` (runtime package ships `.qm` only).
- Runtime package ships the Mastodon settings translation-loader QML plugin under `%{_libdir}/qt5/qml/com/jolla/settings/accounts/mastodon/`.

### Root project
- `sailfish-account-mastodon.pro` ties subprojects together.

## Current Notification Behavior

- Events view shows Mastodon posts (not notification entries).
- Events view post metadata line includes replies, favourites, and boosts alongside elapsed timestamp.
- System notifications are produced by `buteo-sync-plugin-mastodon-notifications`.
- Notifications sync starts from Mastodon server marker (`notifications.last_read_id`) and uses local cursor dedupe via per-account `LastFetchedNotificationId`.
- Each unread Mastodon notification is published as a separate Sailfish system notification.
- Mastodon marker (`last_read_id`) is updated only when no local Mastodon notifications remain for that account.
- Notification template profile dispatches per-account sync profiles on schedule (default every 30 minutes), not only at boot.

## Build Requirements

This project targets Sailfish OS build tooling.

Full build/package validation is not possible without Sailfish SDK access (target sysroot + Sailfish packages).

Required SDK-provided dependencies include (not exhaustive):
- `buteosyncfw5`
- `socialcache`
- `sailfishaccounts`
- `nemotransferengine-qt5`
- related Qt/account stack packages listed in `rpm/sailfish-account-mastodon.spec`

## Typical Build Flow (Inside Sailfish SDK)

1. Enter Sailfish SDK shell/target.
2. Build from repository root (`qmake` / `make`).
3. Build RPM package(s) from `rpm/sailfish-account-mastodon.spec`.

Outside Sailfish SDK, only static validation (wiring, paths, spec consistency) should be considered reliable.