mirror of
https://github.com/LCE-Hub/LCE-Emerald-Launcher.git
synced 2026-07-19 00:37:07 +00:00
feat: LCEOnline instead of LCELive
This commit is contained in:
parent
fdb95d0d8f
commit
7edcfd33b0
|
|
@ -7,10 +7,12 @@ import { TauriService } from "../../services/TauriService";
|
|||
interface LceOnlineViewProps {
|
||||
addFriendTarget?: string | null;
|
||||
onClearAddFriendTarget?: () => void;
|
||||
invites?: Array<{ from: string; sessionid: string }>;
|
||||
}
|
||||
const LceOnlineView = memo(function LceOnlineView({
|
||||
addFriendTarget,
|
||||
onClearAddFriendTarget,
|
||||
invites: invitesProp,
|
||||
}: LceOnlineViewProps) {
|
||||
const { setActiveView } = useUI();
|
||||
const { animationsEnabled } = useConfig();
|
||||
|
|
@ -24,7 +26,7 @@ const LceOnlineView = memo(function LceOnlineView({
|
|||
const [friends, setFriends] = useState<string[]>([]);
|
||||
const [incomingReqs, setIncomingReqs] = useState<string[]>([]);
|
||||
const [outgoingReqs, setOutgoingReqs] = useState<string[]>([]);
|
||||
const [invites, setInvites] = useState<Array<{ from: string; sessionid: string }>>([]);
|
||||
const invites = invitesProp ?? [];
|
||||
const [isHosting, setIsHosting] = useState(false);
|
||||
const [isAddingFriend, setIsAddingFriend] = useState(false);
|
||||
const [addFriendUsername, setAddFriendUsername] = useState("");
|
||||
|
|
@ -49,12 +51,6 @@ const LceOnlineView = memo(function LceOnlineView({
|
|||
} catch (e: unknown) {
|
||||
console.error(e);
|
||||
}
|
||||
try {
|
||||
const invitesData = await lceOnlineService.getInvites();
|
||||
setInvites(invitesData);
|
||||
} catch {
|
||||
setInvites([]);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
|
|
|
|||
|
|
@ -2,30 +2,40 @@ import { useState, useEffect, useRef } from "react";
|
|||
import { lceOnlineService } from "../services/LceOnlineService";
|
||||
export function useLceOnlineNotifications() {
|
||||
const [friendRequestMessage, setFriendRequestMessage] = useState<string | null>(null);
|
||||
const [invites, setInvites] = useState<Array<{ from: string; sessionid: string }>>([]);
|
||||
const seenRequests = useRef<Set<string>>(new Set());
|
||||
useEffect(() => {
|
||||
let pollInterval: ReturnType<typeof setInterval>;
|
||||
|
||||
const poll = async () => {
|
||||
if (!lceOnlineService.signedIn) return;
|
||||
try {
|
||||
const lists = await lceOnlineService.getSocialLists();
|
||||
lists.requests.forEach((r: string) => {
|
||||
if (!seenRequests.current.has(r)) {
|
||||
seenRequests.current.add(r);
|
||||
setFriendRequestMessage(`New request from ${r}`);
|
||||
}
|
||||
});
|
||||
} catch (e) { }
|
||||
try {
|
||||
const invitesData = await lceOnlineService.getInvites();
|
||||
setInvites(invitesData);
|
||||
} catch { }
|
||||
};
|
||||
|
||||
const init = async () => {
|
||||
if (lceOnlineService.signedIn) {
|
||||
try {
|
||||
const lists = await lceOnlineService.getSocialLists();
|
||||
lists.requests.forEach((r: string) => seenRequests.current.add(r));
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
pollInterval = setInterval(async () => {
|
||||
if (!lceOnlineService.signedIn) return;
|
||||
try {
|
||||
const lists = await lceOnlineService.getSocialLists();
|
||||
lists.requests.forEach((r: string) => {
|
||||
if (!seenRequests.current.has(r)) {
|
||||
seenRequests.current.add(r);
|
||||
setFriendRequestMessage(`New request from ${r}`);
|
||||
}
|
||||
});
|
||||
} catch (e) { }
|
||||
}, 10000);
|
||||
const invitesData = await lceOnlineService.getInvites();
|
||||
setInvites(invitesData);
|
||||
} catch { }
|
||||
}
|
||||
pollInterval = setInterval(poll, 10000);
|
||||
};
|
||||
|
||||
init();
|
||||
|
|
@ -37,5 +47,6 @@ export function useLceOnlineNotifications() {
|
|||
return {
|
||||
friendRequestMessage,
|
||||
clearFriendRequestMessage: () => setFriendRequestMessage(null),
|
||||
invites,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ export default function App() {
|
|||
const {
|
||||
friendRequestMessage,
|
||||
clearFriendRequestMessage,
|
||||
invites,
|
||||
} = notifications;
|
||||
const [showSetup, setShowSetup] = useState(false);
|
||||
const [isSetupChecked, setIsSetupChecked] = useState(false);
|
||||
|
|
@ -617,6 +618,7 @@ export default function App() {
|
|||
key="lceonline-view"
|
||||
addFriendTarget={addFriendTarget}
|
||||
onClearAddFriendTarget={() => setAddFriendTarget(null)}
|
||||
invites={invites}
|
||||
/>
|
||||
)}
|
||||
{activeView === "skins" && <SkinsView key="skins-view" />}
|
||||
|
|
|
|||
Loading…
Reference in a new issue