diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static')
14 files changed, 49 insertions, 11 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/app.js b/packages/meshbay-hub/src/meshbay_hub/static/app.js index 41cc5f2..031e276 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/app.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/app.js @@ -944,9 +944,10 @@ function App() { return () => { gone = true; if (stop) stop(); }; }, [syncAccount]); - // Contacts and messages backup (§9.13), the same way. + // Contacts, calendar and messages backup (§9.13), the same way. useEffect(() => { - if (!syncAccount || !(platform.contactSync.available || platform.messageSync.available)) { + if (!syncAccount || !(platform.contactSync.available || platform.calendarSync.available + || platform.messageSync.available)) { return undefined; } let stop = null; @@ -964,7 +965,7 @@ function App() { }, }); stop = m.stopPhoneSync; - }).catch((e) => console.warn('[MeshBay] contacts and messages backup did not load:', e.message)); + }).catch((e) => console.warn('[MeshBay] phone backups did not load:', e.message)); return () => { gone = true; if (stop) stop(); }; }, [syncAccount]); diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js index 086f3a9..5f508da 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -1340,6 +1340,9 @@ export default { 'contactsync.heading': "Kontakte-Sicherung", 'contactsync.intro': "Einmal täglich, wenn sie sich geändert haben, eine Kopie der Kontakte dieses Telefons senden. Jede Kopie ist eine .vcf-Datei, die jedes Telefon importieren kann.", 'contactsync.permission_needed': "MeshBay braucht Zugriff auf die Kontakte dieses Telefons.", + 'calendarsync.heading': "Kalender-Sicherung", + 'calendarsync.intro': "Einmal täglich, wenn sie sich geändert haben, eine Kopie der Kalender dieses Telefons senden: die, die du bearbeiten kannst, nicht die nur abonnierten. Jede Kopie ist eine .ics-Datei, die jeder Kalender importieren kann.", + 'calendarsync.permission_needed': "MeshBay braucht Zugriff auf die Kalender dieses Telefons.", 'messagesync.heading': "SMS-Sicherung", 'messagesync.intro': "Die SMS dieses Telefons einmal täglich senden: Die erste Kopie enthält alle, jede weitere nur die neuen. Die Dateien sind im XML-Format, das SMS-Sicherungs-Apps wiederherstellen können. MMS sind nicht enthalten.", 'messagesync.permission_needed': "MeshBay braucht Zugriff auf die SMS dieses Telefons.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js index 66cd23b..6b7d73f 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js @@ -1321,6 +1321,9 @@ export default { 'contactsync.heading': "Contacts backup", 'contactsync.intro': "Send a copy of this phone's contacts once a day when they have changed. Each copy is a .vcf file any phone can import.", 'contactsync.permission_needed': "MeshBay needs access to this phone's contacts.", + 'calendarsync.heading': "Calendar backup", + 'calendarsync.intro': "Send a copy of this phone's calendars once a day when they have changed: the ones you can edit, not those you only subscribe to. Each copy is an .ics file any calendar can import.", + 'calendarsync.permission_needed': "MeshBay needs access to this phone's calendars.", 'messagesync.heading': "Messages backup", 'messagesync.intro': "Send the text messages on this phone once a day: the first copy holds them all, each next one only the new ones. The files are in the XML format SMS backup applications restore. Multimedia messages are not included.", 'messagesync.permission_needed': "MeshBay needs access to this phone's text messages.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js index c53e3e4..f2c1cfc 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js @@ -1334,6 +1334,9 @@ export default { 'contactsync.heading': "Copia de seguridad de contactos", 'contactsync.intro': "Enviar una copia de los contactos de este teléfono una vez al día si han cambiado. Cada copia es un archivo .vcf que cualquier teléfono puede importar.", 'contactsync.permission_needed': "MeshBay necesita acceso a los contactos de este teléfono.", + 'calendarsync.heading': "Copia de seguridad del calendario", + 'calendarsync.intro': "Enviar una copia de los calendarios de este teléfono una vez al día si han cambiado: los que puedes editar, no aquellos a los que solo estás suscrito. Cada copia es un archivo .ics que cualquier calendario puede importar.", + 'calendarsync.permission_needed': "MeshBay necesita acceso a los calendarios de este teléfono.", 'messagesync.heading': "Copia de seguridad de SMS", 'messagesync.intro': "Enviar los SMS de este teléfono una vez al día: la primera copia los contiene todos y cada una de las siguientes solo los nuevos. Los archivos están en el formato XML que restauran las aplicaciones de copia de seguridad de SMS. Los MMS no se incluyen.", 'messagesync.permission_needed': "MeshBay necesita acceso a los SMS de este teléfono.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js index 52b40b0..3b5b881 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js @@ -1349,6 +1349,9 @@ export default { 'contactsync.heading': "Sauvegarde des contacts", 'contactsync.intro': "Envoyer une copie des contacts de ce téléphone une fois par jour s'ils ont changé. Chaque copie est un fichier .vcf que tout téléphone sait importer.", 'contactsync.permission_needed': "MeshBay a besoin d'accéder aux contacts de ce téléphone.", + 'calendarsync.heading': "Sauvegarde de l'agenda", + 'calendarsync.intro': "Envoyer une copie des agendas de ce téléphone une fois par jour s'ils ont changé : ceux que vous pouvez modifier, pas ceux auxquels vous êtes seulement abonné. Chaque copie est un fichier .ics que tout agenda sait importer.", + 'calendarsync.permission_needed': "MeshBay a besoin d'accéder aux agendas de ce téléphone.", 'messagesync.heading': "Sauvegarde des SMS", 'messagesync.intro': "Envoyer les SMS de ce téléphone une fois par jour : la première copie les contient tous, les suivantes seulement les nouveaux. Les fichiers sont au format XML que les applis de sauvegarde SMS savent restaurer. Les MMS ne sont pas inclus.", 'messagesync.permission_needed': "MeshBay a besoin d'accéder aux SMS de ce téléphone.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js index 9387ddd..9935edb 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js @@ -1348,6 +1348,9 @@ export default { 'contactsync.heading': "Backup dei contatti", 'contactsync.intro': "Invia una copia dei contatti di questo telefono una volta al giorno se sono cambiati. Ogni copia è un file .vcf che qualsiasi telefono può importare.", 'contactsync.permission_needed': "MeshBay ha bisogno di accedere ai contatti di questo telefono.", + 'calendarsync.heading': "Backup del calendario", + 'calendarsync.intro': "Invia una copia dei calendari di questo telefono una volta al giorno se sono cambiati: quelli che puoi modificare, non quelli a cui sei solo iscritto. Ogni copia è un file .ics che qualsiasi calendario può importare.", + 'calendarsync.permission_needed': "MeshBay ha bisogno di accedere ai calendari di questo telefono.", 'messagesync.heading': "Backup degli SMS", 'messagesync.intro': "Invia gli SMS di questo telefono una volta al giorno: la prima copia li contiene tutti, le successive solo quelli nuovi. I file sono nel formato XML che le app di backup degli SMS sanno ripristinare. Gli MMS non sono inclusi.", 'messagesync.permission_needed': "MeshBay ha bisogno di accedere agli SMS di questo telefono.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js index 29296d1..2af2f49 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -1332,6 +1332,9 @@ export default { 'contactsync.heading': "連絡先のバックアップ", 'contactsync.intro': "このスマートフォンの連絡先のコピーを、変更があった日に1日1回送ります。各コピーはどのスマートフォンでも読み込める .vcf ファイルです。", 'contactsync.permission_needed': "MeshBay にこのスマートフォンの連絡先へのアクセスを許可してください。", + 'calendarsync.heading': "カレンダーのバックアップ", + 'calendarsync.intro': "このスマートフォンのカレンダーのコピーを、変更があった日に1日1回送ります。対象は編集できるカレンダーで、購読しているだけのものは含みません。各コピーはどのカレンダーでも読み込める .ics ファイルです。", + 'calendarsync.permission_needed': "MeshBay にこのスマートフォンのカレンダーへのアクセスを許可してください。", 'messagesync.heading': "SMS のバックアップ", 'messagesync.intro': "このスマートフォンの SMS を1日1回送ります。最初のコピーにはすべてが含まれ、以降は新しいものだけが含まれます。ファイルは SMS バックアップアプリで復元できる XML 形式です。MMS は含まれません。", 'messagesync.permission_needed': "MeshBay にこのスマートフォンの SMS へのアクセスを許可してください。", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js index ada6813..9e83c86 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js @@ -1350,6 +1350,9 @@ export default { 'contactsync.heading': "Back-up van contacten", 'contactsync.intro': "Stuur eenmaal per dag, als ze veranderd zijn, een kopie van de contacten op deze telefoon. Elke kopie is een .vcf-bestand dat elke telefoon kan importeren.", 'contactsync.permission_needed': "MeshBay heeft toegang nodig tot de contacten op deze telefoon.", + 'calendarsync.heading': "Back-up van de agenda", + 'calendarsync.intro': "Stuur eenmaal per dag, als ze veranderd zijn, een kopie van de agenda's op deze telefoon: de agenda's die je kunt bewerken, niet de agenda's waarop je alleen geabonneerd bent. Elke kopie is een .ics-bestand dat elke agenda kan importeren.", + 'calendarsync.permission_needed': "MeshBay heeft toegang nodig tot de agenda's op deze telefoon.", 'messagesync.heading': "Back-up van sms'jes", 'messagesync.intro': "Stuur de sms'jes op deze telefoon eenmaal per dag: de eerste kopie bevat ze allemaal, elke volgende alleen de nieuwe. De bestanden zijn in het XML-formaat dat sms-back-upapps kunnen terugzetten. Mms'jes zijn niet inbegrepen.", 'messagesync.permission_needed': "MeshBay heeft toegang nodig tot de sms'jes op deze telefoon.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js index 3e712bb..cb0d0b6 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -1376,6 +1376,9 @@ export default { 'contactsync.heading': "Kopia kontaktów", 'contactsync.intro': "Wysyłaj kopię kontaktów z tego telefonu raz dziennie, jeśli się zmieniły. Każda kopia to plik .vcf, który zaimportuje każdy telefon.", 'contactsync.permission_needed': "MeshBay potrzebuje dostępu do kontaktów w tym telefonie.", + 'calendarsync.heading': "Kopia kalendarza", + 'calendarsync.intro': "Wysyłaj kopię kalendarzy z tego telefonu raz dziennie, jeśli się zmieniły: tych, które możesz edytować, a nie tylko subskrybowanych. Każda kopia to plik .ics, który zaimportuje każdy kalendarz.", + 'calendarsync.permission_needed': "MeshBay potrzebuje dostępu do kalendarzy w tym telefonie.", 'messagesync.heading': "Kopia SMS-ów", 'messagesync.intro': "Wysyłaj SMS-y z tego telefonu raz dziennie: pierwsza kopia zawiera wszystkie, każda kolejna tylko nowe. Pliki są w formacie XML, który przywracają aplikacje do kopii SMS-ów. MMS-y nie są uwzględniane.", 'messagesync.permission_needed': "MeshBay potrzebuje dostępu do SMS-ów w tym telefonie.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js index 8fe39e5..cb3aa70 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js @@ -1335,6 +1335,9 @@ export default { 'contactsync.heading': "Backup de contatos", 'contactsync.intro': "Enviar uma cópia dos contatos deste celular uma vez por dia se tiverem mudado. Cada cópia é um arquivo .vcf que qualquer celular consegue importar.", 'contactsync.permission_needed': "O MeshBay precisa de acesso aos contatos deste celular.", + 'calendarsync.heading': "Backup da agenda", + 'calendarsync.intro': "Enviar uma cópia das agendas deste celular uma vez por dia se tiverem mudado: as que você pode editar, não as que você só assina. Cada cópia é um arquivo .ics que qualquer agenda consegue importar.", + 'calendarsync.permission_needed': "O MeshBay precisa de acesso às agendas deste celular.", 'messagesync.heading': "Backup de SMS", 'messagesync.intro': "Enviar os SMS deste celular uma vez por dia: a primeira cópia contém todos, cada uma das seguintes só os novos. Os arquivos estão no formato XML que os apps de backup de SMS conseguem restaurar. MMS não são incluídos.", 'messagesync.permission_needed': "O MeshBay precisa de acesso aos SMS deste celular.", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js index e294fe5..bb47b00 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js @@ -1321,6 +1321,9 @@ export default { 'contactsync.heading': "联系人备份", 'contactsync.intro': "在联系人有变动的日子里,每天一次发送本机联系人的副本。每份副本都是任何手机都能导入的 .vcf 文件。", 'contactsync.permission_needed': "MeshBay 需要访问本机的联系人。", + 'calendarsync.heading': "日历备份", + 'calendarsync.intro': "在日历有变动的日子里,每天一次发送本机日历的副本:包括你可以编辑的日历,不包括仅订阅的日历。每份副本都是任何日历都能导入的 .ics 文件。", + 'calendarsync.permission_needed': "MeshBay 需要访问本机的日历。", 'messagesync.heading': "短信备份", 'messagesync.intro': "每天一次发送本机的短信:第一份副本包含全部短信,之后每份只包含新短信。文件采用短信备份应用可以恢复的 XML 格式。不包括彩信。", 'messagesync.permission_needed': "MeshBay 需要访问本机的短信。", diff --git a/packages/meshbay-hub/src/meshbay_hub/static/phone-sync-settings.js b/packages/meshbay-hub/src/meshbay_hub/static/phone-sync-settings.js index 0602e54..2c1ebc0 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/phone-sync-settings.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/phone-sync-settings.js @@ -1,6 +1,6 @@ -// The contacts and messages sections of the Android Sync page, on the Android -// application only (docs/MESHBAY_DESIGN.md §9.13). Loaded on demand: no other -// client has it. Where the copies go is the page's destination section; these +// The contacts, calendar and messages sections of the Android Sync page, on +// the Android application only (docs/MESHBAY_DESIGN.md §9.13). Loaded on +// demand: no other client has it. Where the copies go is the page's destination section; these // only turn each backup on or off. import { html, useState, useEffect, useCallback } from './vendor/htm-preact.js'; @@ -13,6 +13,10 @@ const TEXT = { intro: 'contactsync.intro', permission: 'contactsync.permission_needed', }, + calendar: { + intro: 'calendarsync.intro', + permission: 'calendarsync.permission_needed', + }, messages: { intro: 'messagesync.intro', permission: 'messagesync.permission_needed', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/phone-sync.js b/packages/meshbay-hub/src/meshbay_hub/static/phone-sync.js index 2c34af0..4e9245a 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/phone-sync.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/phone-sync.js @@ -1,7 +1,8 @@ -// Contacts and messages backup: a copy of this phone's address book, and the -// text messages added since the last copy, sent to `<folder>/<account>-contacts` -// and `-messages` of the destination every backup shares (sync-destination.js), -// once a day when there is something new (docs/MESHBAY_DESIGN.md §9.13). +// Contacts, calendar and messages backup: a copy of this phone's address book +// and calendars, and the text messages added since the last copy, sent to +// `<folder>/<account>-contacts`, `-calendar` and `-messages` of the destination +// every backup shares (sync-destination.js), once a day when there is +// something new (docs/MESHBAY_DESIGN.md §9.13). // // The same split as photos (photo-sync.js): the phone writes what is new into // one file and remembers what the node took; this module decides when a run @@ -30,6 +31,7 @@ const RETRY_MS = 15 * 60 * 1000; */ export const KINDS = { contacts: { sync: platform.contactSync, heading: 'contactsync.heading', suffix: 'contacts' }, + calendar: { sync: platform.calendarSync, heading: 'calendarsync.heading', suffix: 'calendar' }, messages: { sync: platform.messageSync, heading: 'messagesync.heading', suffix: 'messages' }, }; diff --git a/packages/meshbay-hub/src/meshbay_hub/static/platform.js b/packages/meshbay-hub/src/meshbay_hub/static/platform.js index 4b507dc..2cfa673 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/platform.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/platform.js @@ -267,7 +267,7 @@ export const phoneSync = { }; /** - * Backing up one kind of this phone's data (contacts, messages) to the destination + * Backing up one kind of this phone's data (contacts, calendar, messages) to the destination * every kind shares (docs/MESHBAY_DESIGN.md §9.13). Android only, like * `photoSync`. See phone-sync.js. */ @@ -292,6 +292,7 @@ function docSync(name) { } export const contactSync = docSync('contactSync'); +export const calendarSync = docSync('calendarSync'); /** Absent from the Play build, whose policy keeps text messages from it. */ export const messageSync = docSync('messageSync'); |