feat: remove client-driven profile sync — replaced by S2S relay

This commit is contained in:
Jannis Braun
2026-04-07 13:59:16 +02:00
parent ec6cb236a2
commit a7cd6a1bf3
3 changed files with 0 additions and 267 deletions
-5
View File
@@ -7,7 +7,6 @@ import { useSocialStore } from './socialStore';
import { useVoiceStore } from './voiceStore';
import { useInstanceStore } from './instanceStore';
import { useActivityStore } from './activityStore';
import { syncProfileUpdateToRemotes } from '../utils/profileSync';
import { changePasswordOnRemotes, deleteAccountOnRemotes, type FederationOpResult } from '../utils/federationOps';
import { clearSelfIds } from '../utils/identity';
@@ -100,10 +99,6 @@ export const useAuthStore = create<AuthState>((set, get) => ({
try {
const user = await api.users.update(data);
set({ user });
// Push profile changes to all connected remote instances
syncProfileUpdateToRemotes(data).catch((err) => {
console.warn('[ProfileSync] Failed to sync to remotes:', err);
});
} catch (err) {
set({ error: err instanceof Error ? err.message : 'Update failed' });
throw err;
-19
View File
@@ -4,7 +4,6 @@ import { BackspaceApiClient, createApiClient, api } from '../api/client';
import { useAuthStore } from './authStore';
import { setApiForOriginResolver, setUserIdForOriginResolver, setOriginFromHostnameResolver, useSpaceStore } from './spaceStore';
import { connectInstance, disconnectInstance as disconnectWs, disconnectAllRemote } from '../hooks/useWebSocket';
import { syncProfileToRemote } from '../utils/profileSync';
// Circular dependency: federationOps imports useInstanceStore, instanceStore imports this.
// Safe because both modules access each other lazily (at call time, not import time).
// clearPasswordSyncTimers itself does not reference useInstanceStore.
@@ -331,14 +330,6 @@ export const useInstanceStore = create<InstanceState>((set, get) => ({
// Open WebSocket connection to the remote instance
connectInstance(origin, response.token);
// Sync home profile to new remote (fire-and-forget).
// Skip when target is home — home is the source of truth for profile data.
if (!targetIsHome) {
syncProfileToRemote(instance).catch((err) => {
console.warn(`[ProfileSync] Initial sync to ${origin} failed:`, err);
});
}
// Initiate server-to-server peering for DM relay (non-fatal)
try {
await api.federation.initiatePeering({ remoteOrigin: origin });
@@ -402,11 +393,6 @@ export const useInstanceStore = create<InstanceState>((set, get) => ({
// Open WebSocket connection to the remote instance
connectInstance(origin, response.token);
// Sync full home profile to remote (fire-and-forget)
syncProfileToRemote(instance).catch((err) => {
console.warn(`[ProfileSync] Login sync to ${origin} failed:`, err);
});
// Sync instance list to all instances (fire-and-forget)
get().syncInstanceList().catch(() => {});
get().syncRegistry().catch(() => {});
@@ -936,11 +922,6 @@ export const useInstanceStore = create<InstanceState>((set, get) => ({
// Open WebSocket connection now that we've verified the token
connectInstance(origin, cachedEntry.token);
// Sync home profile to reconnected remote (fire-and-forget)
syncProfileToRemote(connectedInstance).catch((err) => {
console.warn(`[ProfileSync] Reconnect sync to ${origin} failed:`, err);
});
// Initiate server-to-server peering for DM relay (non-fatal, idempotent)
api.federation.initiatePeering({ remoteOrigin: origin }).catch(() => {});
} catch (err) {