sheet changed

pull/1154/head
abron 2025-08-26 15:44:56 +03:30
parent 2475a36e50
commit bdd8b97bc8
1 changed files with 45 additions and 15 deletions

View File

@ -52,6 +52,11 @@ interface Server {
sortorder: number;
}
interface CachedData {
timestamp: number;
data: Server[];
}
// Add a styled component for the new text color
const NewServerWrapper = styled.div`
color: #fadf4f;
@ -65,6 +70,20 @@ const NewServerWrapper = styled.div`
const CACHE_KEY = "server_list_cache";
const CACHE_DURATION = 1 * 60 * 1000; // 1 minutes in milliseconds
// Fallback data in case Google Sheets is unavailable
const FALLBACK_SERVERS: Server[] = [
{
id: "01F7ZSBSFHQ8TA81725KQCSDDP",
name: "PlaceHolder",
description: "Community",
inviteCode: "development",
disabled: false,
new: false,
sortorder: 2
}
];
// Safe localStorage wrapper
const safeStorage = {
getItem: (key: string): string | null => {
@ -93,7 +112,7 @@ const Home: React.FC = () => {
const fetchAndCacheData = async () => {
try {
const csvUrl =
"https://docs.google.com/spreadsheets/d/e/2PACX-1vRY41D-NgTE6bC3kTN3dRpisI-DoeHG8Eg7n31xb1CdydWjOLaphqYckkTiaG9oIQSWP92h3NE-7cpF/pub?gid=0&single=true&output=csv";
"https://docs.google.com/spreadsheets/d/1kNF50scEUJVJ9KD-0_ibX43vJiOzdHrmgauLoSoBy34/export?format=csv&gid=0";
// Add cache-busting parameter to prevent browser caching
const urlWithCacheBust = `${csvUrl}&_cb=${Date.now()}`;
@ -126,15 +145,19 @@ const Home: React.FC = () => {
},
error: (err) => {
console.error("Error fetching CSV:", err);
setError(
"Failed to load server data. Please try again later.",
);
console.warn("Using fallback server data due to Google Sheets error");
// Use fallback data instead of showing error
setServers(FALLBACK_SERVERS);
setLoading(false);
},
});
} catch (err) {
console.error("Unexpected error:", err);
setError("An unexpected error occurred. Please try again later.");
console.warn("Using fallback server data due to unexpected error");
// Use fallback data instead of showing error
setServers(FALLBACK_SERVERS);
setLoading(false);
}
};
@ -160,7 +183,14 @@ const Home: React.FC = () => {
// Continue to fetch fresh data if cache read fails
}
await fetchAndCacheData();
try {
await fetchAndCacheData();
} catch (err) {
console.error("Failed to fetch data even after cache miss:", err);
console.warn("Using fallback server data as last resort");
setServers(FALLBACK_SERVERS);
setLoading(false);
}
};
getCachedOrFetchData();
@ -172,18 +202,18 @@ const Home: React.FC = () => {
? `/server/${server.id}`
: `/invite/${server.inviteCode}`;
const iconComponent = server.disabled ? (
<Lock size={32} />
) : isServerJoined ? (
<MessageDots size={32} />
) : (
<MessageAdd size={32} />
);
const buttonContent = (
<CategoryButton
action={server.disabled ? undefined : "chevron"}
icon={
server.disabled ? (
<Lock size={32} />
) : isServerJoined ? (
<MessageDots size={32} />
) : (
<MessageAdd size={32} />
)
}
icon={iconComponent as any}
description={server.description}>
{server.name}
</CategoryButton>