diff --git a/packages/hub/src/readqueue.ts b/packages/hub/src/readqueue.ts index d71f077..768f024 100644 --- a/packages/hub/src/readqueue.ts +++ b/packages/hub/src/readqueue.ts @@ -10,7 +10,7 @@ import type * as P from '@dither-chat/protocol'; import type { Store } from './store.ts'; /** Time between reads on one account, in ms. */ -export const READ_PACE: Record = { discord: 1500, matrix: 300, signal: 300, whatsapp: 1000, telegram: 500, gmessages: 500 }; +export const READ_PACE: Record = { discord: 1500, matrix: 300, signal: 300, whatsapp: 1000, telegram: 500, gmessages: 500, messenger: 1000, instagram: 1000, x: 1000 }; const MAX_ATTEMPTS = 5; const BACKOFF = 30_000; diff --git a/packages/protocol/src/about.ts b/packages/protocol/src/about.ts index 9344277..ca5189a 100644 --- a/packages/protocol/src/about.ts +++ b/packages/protocol/src/about.ts @@ -203,6 +203,18 @@ export const ABOUT_RULES: Record = { space: [], nameMax: 100, }, + messenger: { + conversation: ['name', 'avatar'], + space: [], + }, + instagram: { + conversation: ['name'], + space: [], + }, + x: { + conversation: ['name', 'avatar'], + space: [], + }, }; export const ABOUT_LABEL: Record = { diff --git a/packages/protocol/src/ontology.ts b/packages/protocol/src/ontology.ts index f131674..805b91b 100644 --- a/packages/protocol/src/ontology.ts +++ b/packages/protocol/src/ontology.ts @@ -15,8 +15,12 @@ * (persons, folders, notification rules, triage) are never written back. */ -export type Network = 'discord' | 'signal' | 'matrix' | 'whatsapp' | 'telegram' | 'gmessages'; -/** The networks this hub offers. telegram and gmessages (Google Messages: SMS and RCS) run only in dither-accounts. */ +export type Network = 'discord' | 'signal' | 'matrix' | 'whatsapp' | 'telegram' | 'gmessages' | 'messenger' | 'instagram' | 'x'; +/** + * The networks this hub offers. telegram and gmessages (Google Messages: SMS and RCS) run only in dither-accounts. + * messenger, instagram and x (X's direct messages) are in the type for dither-accounts' extractors being built, and join + * this list once the hub runs them. + */ export const NETWORKS: readonly Network[] = ['discord', 'signal', 'matrix', 'whatsapp', 'telegram', 'gmessages']; /** Where a conversation sits in the social structure, independent of network. */ @@ -116,6 +120,10 @@ export const REACTION_RULES: Record = { telegram: { exclusive: true, freeText: false }, // RCS reactions; SMS has none. gmessages: { exclusive: true, freeText: false }, + // One reaction each, any emoji. + messenger: { exclusive: true, freeText: false }, + instagram: { exclusive: true, freeText: false }, + x: { exclusive: true, freeText: false }, }; export function discordEmojiUrl(id: string, animated?: boolean): string { @@ -172,6 +180,10 @@ export const ATTACHMENT_LIMITS: Record void }) { diff --git a/packages/web/src/ui/Profile.tsx b/packages/web/src/ui/Profile.tsx index 993c111..d37c887 100644 --- a/packages/web/src/ui/Profile.tsx +++ b/packages/web/src/ui/Profile.tsx @@ -29,6 +29,9 @@ const WHAT_NETWORKS_SHARE: Record = { whatsapp: 'The name in your address book, their About and picture, and whether it is a business.', telegram: 'Name, username, bio and photo, and their phone number or last seen only where they allow it.', gmessages: 'The name and number in your contacts. Messages has no profiles.', + messenger: 'Name and profile picture, as Facebook shows them to you.', + instagram: 'Username, name, bio and picture, and whether the account is private.', + x: 'Name, handle, bio and picture, as their X profile shows them.', }; function externalProfile(i: P.IdentityView): string | null {