Streaming: allow connecting if not logged in, gate certain topics

environments/review-streaming-wgs1pl/deployments/3677
Alex Gleason 2023-07-22 14:55:21 -05:00
rodzic 53c8858fa6
commit 85c8f674b4
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 7211D1F99744FBB7
5 zmienionych plików z 41 dodań i 6 usunięć

Wyświetl plik

@ -1,7 +1,17 @@
import { useLoggedIn } from 'soapbox/hooks';
import { useTimelineStream } from './useTimelineStream';
function useDirectStream() {
return useTimelineStream('direct', 'direct');
const { isLoggedIn } = useLoggedIn();
return useTimelineStream(
'direct',
'direct',
null,
null,
{ enabled: isLoggedIn },
);
}
export { useDirectStream };

Wyświetl plik

@ -1,9 +1,16 @@
import { useLoggedIn } from 'soapbox/hooks';
import { useTimelineStream } from './useTimelineStream';
function useListStream(listId: string) {
const { isLoggedIn } = useLoggedIn();
return useTimelineStream(
`list:${listId}`,
`list&list=${listId}`,
null,
null,
{ enabled: isLoggedIn },
);
}

Wyświetl plik

@ -1,11 +1,20 @@
import { useFeatures } from 'soapbox/hooks';
import { useFeatures, useLoggedIn } from 'soapbox/hooks';
import { useTimelineStream } from './useTimelineStream';
function useNostrStream() {
const features = useFeatures();
const enabled = features.nostrSign && Boolean(window.nostr);
return useTimelineStream('nostr', 'nostr', null, null, { enabled });
const { isLoggedIn } = useLoggedIn();
return useTimelineStream(
'nostr',
'nostr',
null,
null,
{
enabled: isLoggedIn && features.nostrSign && Boolean(window.nostr),
},
);
}
export { useNostrStream };

Wyświetl plik

@ -17,7 +17,7 @@ function useTimelineStream(...args: Parameters<typeof connectTimelineStream>) {
const streamingUrl = instance.urls.get('streaming_api');
const connect = () => {
if (enabled && accessToken && streamingUrl && !stream.current) {
if (enabled && streamingUrl && !stream.current) {
stream.current = dispatch(connectTimelineStream(...args));
}
};

Wyświetl plik

@ -2,14 +2,23 @@ import { fetchAnnouncements } from 'soapbox/actions/announcements';
import { expandNotifications } from 'soapbox/actions/notifications';
import { expandHomeTimeline } from 'soapbox/actions/timelines';
import { useStatContext } from 'soapbox/contexts/stat-context';
import { useLoggedIn } from 'soapbox/hooks';
import { useTimelineStream } from './useTimelineStream';
import type { AppDispatch } from 'soapbox/store';
function useUserStream() {
const { isLoggedIn } = useLoggedIn();
const statContext = useStatContext();
return useTimelineStream('home', 'user', refresh, null, { statContext });
return useTimelineStream(
'home',
'user',
refresh,
null,
{ statContext, enabled: isLoggedIn },
);
}
/** Refresh home timeline and notifications. */