Skip to content

Commit 932bcef

Browse files
committed
add server offline status handling and update translations
1 parent 9f6e991 commit 932bcef

File tree

6 files changed

+67
-25
lines changed

6 files changed

+67
-25
lines changed

src/containers/MainBody/ServerList/Item.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ const ServerItem = memo((props: IProps) => {
150150
{ paddingLeft: server.usingOmp ? 0 : sc(10) },
151151
]}
152152
>
153-
<Text style={{ fontSize: sc(17) }} color={theme.textPrimary}>
153+
<Text style={{ fontSize: sc(17) }}
154+
color={server.isOffline ? theme.textSecondary : theme.textPrimary}
155+
>
154156
{server.hostname}
155157
</Text>
156158
</View>

src/locales/translations/en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,5 @@ export default {
101101
reconnect: "Reconnect",
102102
settings_advanced_discord_status_requires_restart:
103103
"(Requires restarting the game to take action)",
104+
server_status: "Offline",
104105
};

src/locales/translations/pt.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,6 @@ export default {
8585
from_gtasa_folder: "Da pasta do GTASA",
8686
gta_path_modal_cant_find_samp_description_2: "Escolha outra versão ou instale o SA-MP manualmente.",
8787
add_or_play_external_server: "Adicionar aos favoritos ou jogar",
88-
reconnect: "Reconectar"
88+
reconnect: "Reconectar",
89+
server_status: "Desligado",
8990
};

src/utils/helpers.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,14 @@ export const sortAndSearchInServerList = (
218218
languages,
219219
} = searchData;
220220
let list = servers.filter((server) => {
221+
const nonEmptyCheck = nonEmpty ?
222+
(server.playerCount > 0 && !server.isOffline) : true;
223+
221224
const ompCheck = ompOnly ? server.usingOmp === true : true;
225+
222226
const partnershipCheck = checkForPartnership
223227
? server.partner === true
224228
: true;
225-
const nonEmptyCheck = nonEmpty ? server.playerCount > 0 : true;
226229
const unpasswordedCheck = unpassworded
227230
? server.hasPassword === false
228231
: true;
@@ -254,6 +257,10 @@ export const sortAndSearchInServerList = (
254257

255258
if (sortPing !== "none") {
256259
list = list.sort((a, b) => {
260+
261+
if (a.ping === 9999 && b.ping !== 9999) return 1;
262+
if (a.ping !== 9999 && b.ping === 9999) return -1;
263+
257264
if (sortPing === "descending") {
258265
return a.ping - b.ping;
259266
} else {
@@ -321,32 +328,32 @@ const addLanguageFilter = (name: string, keywords: string[]) => {
321328

322329
export const generateLanguageFilters = () => {
323330
addLanguageFilter("English", ["English", "EN", "Eng"]);
324-
addLanguageFilter("Arabic", ["Arabic", "العربية"]);
325-
addLanguageFilter("Czech", ["Czech", "CZ", "Čeština"]);
326-
addLanguageFilter("Chinese", ["Chinese", "CN", "ZH", "中文"]);
327-
addLanguageFilter("Bulgarian", ["Bulgarian", "BG", "Български"]);
331+
addLanguageFilter("Arabic", ["Arabic", "???????"]);
332+
addLanguageFilter("Czech", ["Czech", "CZ", "?eština"]);
333+
addLanguageFilter("Chinese", ["Chinese", "CN", "ZH", "??"]);
334+
addLanguageFilter("Bulgarian", ["Bulgarian", "BG", "?????????"]);
328335
addLanguageFilter("Dutch", ["Dutch", "NL"]);
329-
addLanguageFilter("French", ["French", "FR", "Français"]);
330-
addLanguageFilter("Georgian", ["Georgian", "KA", "ქართული"]);
336+
addLanguageFilter("French", ["French", "FR", "Français"]);
337+
addLanguageFilter("Georgian", ["Georgian", "KA", "???????"]);
331338
addLanguageFilter("German", ["German", "DE", "GER", "Deutsch"]);
332-
addLanguageFilter("Greek", ["Greek", "EL", "Ελληνικά"]);
339+
addLanguageFilter("Greek", ["Greek", "EL", "????????"]);
333340
addLanguageFilter("Hungarian", ["Hungarian", "HU", "Magyar"]);
334341
addLanguageFilter("Indonesian", ["Indonesian", "ID", "Bahasa Indonesia "]);
335342
addLanguageFilter("Italian", ["Italian", "IT", "Italiano"]);
336-
addLanguageFilter("Lithuanian", ["Lithuanian", "LT", "Lietuvių"]);
343+
addLanguageFilter("Lithuanian", ["Lithuanian", "LT", "Lietuvi?"]);
337344
addLanguageFilter("Polish", ["Polish", "PL", "Polski"]);
338-
addLanguageFilter("Portuguese", ["Portuguese", "PT", "Português"]);
339-
addLanguageFilter("Romanian", ["Romanian", "RO", "Română"]);
340-
addLanguageFilter("Russian", ["Russian", "RU", "RUS", "Русский"]);
341-
addLanguageFilter("Spanish", ["Spanish", "ES", "Español"]);
345+
addLanguageFilter("Portuguese", ["Portuguese", "PT", "Português"]);
346+
addLanguageFilter("Romanian", ["Romanian", "RO", "Român?"]);
347+
addLanguageFilter("Russian", ["Russian", "RU", "RUS", "???????"]);
348+
addLanguageFilter("Spanish", ["Spanish", "ES", "Español"]);
342349
addLanguageFilter("Swedish", ["Swedish", "SV", "Svenska"]);
343-
addLanguageFilter("Turkish", ["Turkish", "TR", "Türkçe"]);
344-
addLanguageFilter("Ukrainian", ["Ukrainian", "UK", "Українська"]);
350+
addLanguageFilter("Turkish", ["Turkish", "TR", "Türkçe"]);
351+
addLanguageFilter("Ukrainian", ["Ukrainian", "UK", "??????????"]);
345352
addLanguageFilter("Vietnamese", [
346353
"Vietnamese",
347354
"VI",
348355
"Viet Nam",
349-
"Tiếng Việt",
356+
"Ti?ng Vi?t",
350357
]);
351358
};
352359

@@ -416,4 +423,4 @@ export const getSampVersionFromName = (name: string): SAMPDLLVersions => {
416423
}
417424
});
418425
return ret;
419-
};
426+
};

src/utils/query.ts

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { t } from "i18next";
12
import { invoke_rpc } from "../api/rpc";
23
import { usePersistentServers, useServers } from "../states/servers";
34
import { Log } from "./logger";
@@ -42,14 +43,28 @@ const getServerInfo = async (ip: string, port: number, listType: ListType) => {
4243
ip: ip,
4344
port: port,
4445
});
45-
4646
if (serverInfo === "no_data" || serverInfo == "timed out") {
47+
let server = getServerFromList(ip, port, listType);
48+
if (server && !server.isOffline) {
49+
50+
server = {
51+
...server,
52+
ping: 9999,
53+
playerCount: 0,
54+
maxPlayers: 0,
55+
gameMode: "-",
56+
hostname: `(${t("server_status")}) ${server.hostname}`,
57+
language: "-",
58+
isOffline: true
59+
};
60+
updateServerEveryWhere(server);
61+
}
4762
return Log.debug(
4863
"[query.ts: getServerInfo]",
4964
"There was a problem getting server main info"
5065
);
5166
}
52-
67+
5368
let queryObj = JSON.parse(serverInfo);
5469
const data = {
5570
hasPassword: queryObj.password,
@@ -58,15 +73,30 @@ const getServerInfo = async (ip: string, port: number, listType: ListType) => {
5873
hostname: queryObj.hostname,
5974
gameMode: queryObj.gamemode,
6075
language: queryObj.language,
76+
isOffline: false
6177
};
62-
6378
let server = getServerFromList(ip, port, listType);
6479
if (server) {
6580
server = { ...server, ...data };
6681
updateServerEveryWhere(server);
6782
}
6883
} catch (e) {
69-
Log.debug("[query.ts: getServerInfo]", e);
84+
let server = getServerFromList(ip, port, listType);
85+
if (server && !server.isOffline) {
86+
87+
server = {
88+
...server,
89+
ping: 9999,
90+
playerCount: 0,
91+
maxPlayers: 0,
92+
gameMode: "-",
93+
hostname: `(${t("server_status")}) ${server.hostname}`,
94+
language: "-",
95+
isOffline: true
96+
};
97+
updateServerEveryWhere(server);
98+
Log.debug("[query.ts: getServerInfo]", e);
99+
}
70100
}
71101
};
72102

@@ -267,4 +297,4 @@ const updateServerEveryWhere = (server: Server) => {
267297
setSelected(server);
268298
}
269299
}
270-
};
300+
};

src/utils/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export interface Server {
2525
ping: number;
2626
players: Player[];
2727
password: string;
28+
isOffline: boolean;
2829
omp?: {
2930
bannerLight?: string;
3031
bannerDark?: string;
@@ -93,4 +94,4 @@ export interface PerServerSettings {
9394
ipPort: string;
9495
nickname?: string;
9596
sampVersion?: SAMPDLLVersions;
96-
}
97+
}

0 commit comments

Comments
 (0)