Skip to main content

Module join

Module join 

Source
Expand description

A device joining your other devices through your Nextcloud’s own sign-in (docs/database.md, “Joining through your Nextcloud’s sign-in”): nothing to type but the passphrase, no sync app needed. Offered by the Porch’s card on a device that does not share yet (“Join your other devices”) and in Settings ▸ Your folder and sharing (qml/JoinPanel.qml), on a phone and on a computer alike.

  1. Signed in (sign_in): the server’s sign-in page opens in the browser (sioul_sync::loginflow; Murena’s, or another Nextcloud by its address); the app password it gives goes to the keyring at once (loginflow::keep), never to a file nor a log.
  2. The folder found there (remote::seek): Documents/Sioul, Sioul, or a folder in Documents; proposed, or a place you type; none found, every place looked at: you may start sharing there, as before; the look incomplete (a slow or failing server): look again, or type its place, never a new sharing offered.
  3. Joined (join): the passphrase typed once, checked against the seal (twice for a new sharing); Sioul keeps its own copy of the folder in step with that login (remote::begin_signed_in); a first exchange runs at once and brings the shared settings, accounts and hours. A sharing started there instead is said as such, never as joined.
  4. The contacts and calendars (bind_agenda), once the first exchange brought everything (complete_since), else at a later one (agenda_later): an account of yours on that server (its address’s origin) with that login, come with the settings or here already, is used, given the homes found there and the app password when it has none and it opens it there; else one is made, its homes found on that server alone.
  5. Said (Stand): who this device shares with now, what came, and what still needs a sign-in here; on a phone, whether it replaces another phone (replacing).

Cancel stops it at any step before the join: an app password already given is given back to the server (loginflow::revoke) and forgotten here.

Structs§

Asked 🔒
The phones asked about already, by id, whatever the answer: never asked again. This device’s own (share/replacing.toml), never shared.
Pending 🔒
The contacts and calendars left for a later exchange, the first one not having brought everything: what to decide them with, this device’s own (share/agenda-pending.toml), never shared, never a secret (the app password stays in the keyring, loginflow::kept).
Replacing 🔒
A phone this one may replace, asked once (replacing): its id, and the question in words.
Running 🔒
RUNNING let go when its thread ends, however it ends (a panic too): the next sign-in is never refused for one that is over.
Stand 🔒
Where a sign-in and its joining stand, for the window (status).

Enums§

Agenda 🔒
What becomes of the contacts and calendars of the server signed in to.
Bound 🔒
What became of the contacts and calendars of the server signed in to (bind_agenda).

Constants§

ASK_AFTER 🔒
How long another phone says nothing, as this device sees it, before this one asks whether it replaces it (to_ask): a day, as a computer offers “Forget it now” (health::FORGET_NOW_AFTER). A phone in use goes silent for hours at times (no network, switched off, Android deferring its steps), and a Yes about one would leave the doses without its word (the review of the join, M1); judged by this device’s sight of its entry and its own last word, the later, never by its clock alone.

Statics§

GRANT 🔒
The sign-in’s grant, between the sign-in and the join: in memory only (zeroed when dropped), its app password in the keyring besides.
PAGE 🔒
The page of the sign-in under way, to open again: its address holds the sign-in’s own key, never logged.
RUNNING 🔒
A sign-in, or a join, running: one at a time.
STAND 🔒
STOP 🔒
Cancel pressed.

Functions§

account_host 🔒
A server’s name as an account says it: its host, else its address’s.
account_label 🔒
An account, as the join’s lines name it: its address, or its contacts and calendars’ server.
add_device 🔒
What a new device needs, in a few lines, for Settings ▸ Your folder and sharing ▸ “Add a device” on a computer that shares: where to find the join on it; the server to sign in to and the folder’s place there, when the folder is known on a Nextcloud (found: its name and the place); else the same folder, carried by a sync app; and the passphrase, the one you chose, never shown.
agenda_for 🔒
The decision, from your accounts as they are after the first exchange (those another device brought among them): the server as the sign-in named it, the sign-in’s login, its user as the homes name it, and where its homes are.
agenda_id 🔒
The id the sharing’s state names for the account of that server and login: yours when there is one, else the one it would be made under. A name only: the folder is kept with the sign-in’s own login (State::user).
agenda_later 🔒
After an exchange of the window’s: the contacts and calendars left for later (defer_agenda) decided once a whole look and an exchange went through, with the app password the keyring keeps; said in the status line. Nothing while none is left. Off the window’s thread.
asked 🔒
asked_path 🔒
bind_agenda 🔒
The contacts and calendars of the server signed in to, once the first exchange brought your accounts: yours used, given the homes found there when it has none here (its first sync then never looks for them elsewhere with the app password: L1) and the app password when it has none here and opens it there; else one made and synced. None when nothing could be found there.
cancel 🔒
Cancel: the sign-in stops where it is; an app password given already is given back to its server and forgotten here. Nothing joined is undone.
client 🔒
What Sioul says it is on the server’s sign-in page and in its list of devices and sessions: “Sioul (Android)”.
complete_since 🔒
Whether a whole look through the server went through since since (Unix seconds), every other device’s records, entries and claims brought into this device’s copy, nothing left there to bring, and an exchange read them since: then the settings and the accounts your other devices share are all here, and the contacts and calendars may be decided (M2).
decoded 🔒
A path’s part percent-decoded (“jane%40example.org” → “jane@example.org”).
decoded_path 🔒
A folder’s place among a server’s files, decoded part by part (“Documents/Mes%20dossiers” → “Documents/Mes dossiers”).
defer_agenda 🔒
device_label 🔒
A device as the join’s lines name it: a computer by its name, a phone by its model.
done 🔒
The result read, or a failed sign-in left: nothing said any more.
give_back 🔒
An app password not used after all: given back to its server, forgotten here.
grant 🔒
join 🔒
Joins the sharing through place on the server signed in to, with the passphrase (typed once, checked against the folder’s seal; twice, again, for a new sharing there), off the window’s thread; then a first exchange at once, the contacts and calendars of that server, and what came, said. The grant is kept while the passphrase is wrong, for another try.
joined 🔒
The join itself, on its thread: what it said, and what still needs a sign-in here.
latest_of 🔒
The latest time an entry says, by its device’s clock.
let_go 🔒
Sharing stopped where it was joined through the server’s sign-in (State::user): its app password forgotten here, and given back to the server unless one of your accounts here uses the same (its contacts and calendars, bind_agenda). Off the window’s thread.
line_of 🔒
A binding’s line, said with the rest: “use this sign-in” only where they do (the review of the join, L4); none for an account that keeps its own password, and none for one that needs one (its line under “Still to sign in”).
listed 🔒
Words joined as a list: “a, b and c”.
look_again 🔒
“Look again”, the look having found nothing it could trust (unchecked) or not the place you expected: the server looked through again with the sign-in held, off the window’s thread.
looked 🔒
What the look found, said (Stand): places found, proposed; none found, every place looked at, a new sharing may start there; the look incomplete, or not possible at all (a slow server, a failing listing): “could not look”, look again or type a place, never a new sharing offered where the folder may be (the review of the join, M3).
matching 🔒
Your contacts-and-calendars account for that server and login, if there is one (switched off ones too): its address on the server’s origin (on_server: scheme, host and port, never the host’s name alone, which Accounts keeps without its port), with the same login (case aside) or the same user in its address (user_of). Google’s are never.
moment 🔒
A moment, said shortly: “14:05” today, “Fri 2 Oct” before.
new_id 🔒
The id a new account for that server would take: “murena-agenda”, as Accounts names one (<server's first name>-agenda), free among yours.
on_server 🔒
Whether an account’s address is on server’s origin (scheme, host and port), so that the sign-in’s app password may go to it: an account without an address, or one whose host is the server’s but whose address points elsewhere, never (the review of the join, L2).
open_again 🔒
The sign-in’s page opened again in the browser (closed by mistake).
pending_path 🔒
refusal_words 🔒
Why a sign-in did not go, in words.
replace 🔒
The answer: yes, this phone’s entry says it replaces that one (sealed, for every device: devices::Entry::replaces), forgotten here at once, and an exchange tells the others; no, a second phone, nothing changes. Asked once either way. Nothing of the other phone is deleted.
replacing 🔒
“Does this phone replace GS290, silent since …?”, asked once on a phone that shares while another phone shares too (the owner’s, 16 October 2026: the old phone dead, its battery gone, never to say Stop sharing). None elsewhere, and once answered.
said_joined 🔒
What the join brought, in sentences: who this device shares with now; the settings, the accounts and the hours that came (changed: the settings’ file changed with the first exchange).
set 🔒
sign_in 🔒
Signs in to typed (“murena”, or another Nextcloud’s address), off the window’s thread: its page opened in the browser (open_url), the poll asked until you signed in there, Cancel or twenty minutes; then the sharing folder looked for there. join_changed says each step.
stand 🔒
state_complete 🔒
complete_since’s reading of the state: Sioul keeping the folder itself, a whole step gone through at or after since, no error said since, nothing too large left on the server.
status 🔒
Where things stand, as JSON (Stand).
still_to_sign_in 🔒
The accounts that came, or were here, and need a sign-in on this device: their passwords never travel. One line each, saying where.
to_ask 🔒
Of the other phones in the folder, the one to ask about, if any: on a phone sharing, one that has not stopped sharing, nor said anything for ASK_AFTER as this device sees it (quiet_since: the later of when this device saw its entry change and its own last word; none known: not asked), nor been asked about (Asked), nor been replaced or forgotten here; the one heard of last.
told 🔒
The window told: it reads status again.
user_of 🔒
The user of a Nextcloud’s address, as its paths name it (…/remote.php/dav/calendars/<user>/, …/addressbooks/users/<user>/, …/principals/users/<user>/, …/files/<user>/), decoded.