Compare commits

...

5 Commits

Author SHA1 Message Date
Imran
225362d351 Merge pull request #2539 from neardaniel-pls/main
Refined translation terms
2025-09-19 23:13:36 -04:00
Imran
089bf97ff2 Merge pull request #2545 from kvak54/rustore-patch
Restore RuStore support through replace URL of API.
2025-09-19 23:13:24 -04:00
kvak54
123cd5b130 Restore RuStore support through replace URL of API.
If the application is published as an AAB,
then the old one produced an unusable file (one of split files).
The new one provide a monolithic file.
2025-09-14 21:07:32 +07:00
Near
bc24f008fa fixed spacing 2025-09-13 22:41:20 +01:00
Near
472ec4e400 refine translation terms 2025-09-13 22:37:19 +01:00
2 changed files with 20 additions and 20 deletions

View File

@@ -337,24 +337,24 @@
"fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)", "fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)",
"excludeSecrets": "Excluir segredos", "excludeSecrets": "Excluir segredos",
"removeAppQuestion": { "removeAppQuestion": {
"one": "Remover aplicativo?", "one": "Remover aplicação?",
"other": "Remover aplicativos?" "other": "Remover aplicações?"
}, },
"tooManyRequestsTryAgainInMinutes": { "tooManyRequestsTryAgainInMinutes": {
"one": "Muitas solicitações (taxa de solicitações limitada) - tente novamente em {} minuto", "one": "Muitos pedidos (taxa de pedidos limitada) - tente novamente em {} minuto",
"other": "Muitas solicitações (taxa limitada) - tente novamente em {} minutos" "other": "Muitos pedidos (taxa limitada) - tente novamente em {} minutos"
}, },
"bgUpdateGotErrorRetryInMinutes": { "bgUpdateGotErrorRetryInMinutes": {
"one": "A verificação de atualizações em segundo-plano encontrou um {}, agendada uma nova verificação em {} minuto", "one": "A verificação de atualizações em segundo plano encontrou um {}, agendada uma nova verificação em {} minuto",
"other": "A verificação de atualizações em segundo-plano encontrou um {}, agendada uma nova verificação em {} minutos" "other": "A verificação de atualizações em segundo plano encontrou um {}, agendada uma nova verificação em {} minutos"
}, },
"bgCheckFoundUpdatesWillNotifyIfNeeded": { "bgCheckFoundUpdatesWillNotifyIfNeeded": {
"one": "A verificação de atualizações em segundo-plano encontrou {} atualização, o usuário sera notificado caso necessário", "one": "A verificação de atualizações em segundo plano encontrou {} atualização, o utilizador será notificado caso necessário",
"other": "A verificação de atualizações em segundo-plano encontrou {} atualizações, o usuário sera notificado caso necessário" "other": "A verificação de atualizações em segundo plano encontrou {} atualizações, o utilizador será notificado caso necessário"
}, },
"apps": { "apps": {
"one": "{} Aplicativo", "one": "{} Aplicação",
"other": "{} Aplicativos" "other": "{} Aplicações"
}, },
"url": { "url": {
"one": "{} URL", "one": "{} URL",
@@ -377,20 +377,20 @@
"other": "Foram limpos {n} logs (antes = {antes}, depois = {depois})" "other": "Foram limpos {n} logs (antes = {antes}, depois = {depois})"
}, },
"xAndNMoreUpdatesAvailable": { "xAndNMoreUpdatesAvailable": {
"one": "{} e um outro aplicativo possui atualizações.", "one": "{} e uma outra aplicação possui atualizações.",
"other": "{} e {} outros aplicativo possuem atualizações." "other": "{} e {} outras aplicações possuem atualizações."
}, },
"xAndNMoreUpdatesInstalled": { "xAndNMoreUpdatesInstalled": {
"one": "{} e um outro aplicativo foram atualizado.", "one": "{} e uma outra aplicação foram atualizadas.",
"other": "{} e {} outros aplicativos foram atualizados." "other": "{} e {} outras aplicações foram atualizadas."
}, },
"xAndNMoreUpdatesFailed": { "xAndNMoreUpdatesFailed": {
"one": "Falha ao atualizar {} e mais 1 aplicação.", "one": "Falha ao atualizar {} e mais 1 aplicação.",
"other": "Falha ao atualizar {} e {} mais aplicações." "other": "Falha ao atualizar {} e {} outras aplicações."
}, },
"xAndNMoreUpdatesPossiblyInstalled": { "xAndNMoreUpdatesPossiblyInstalled": {
"one": "{} e um outro aplicativo podem ter sido atualizados.", "one": "{} e uma outra aplicação podem ter sido atualizadas.",
"other": "{} e {} outros aplicativos podem ter sido atualizados." "other": "{} e {} outras aplicações podem ter sido atualizadas."
}, },
"apk": { "apk": {
"one": "{} APK", "one": "{} APK",

View File

@@ -80,20 +80,20 @@ class RuStore extends AppSource {
} }
Response res1 = await sourceRequest( Response res1 = await sourceRequest(
'https://backapi.rustore.ru/applicationData/download-link', 'https://backapi.rustore.ru/applicationData/v2/download-link',
additionalSettings, additionalSettings,
followRedirects: false, followRedirects: false,
postBody: {"appId": appDetails['appId'], "firstInstall": true}, postBody: {"appId": appDetails['appId'], "firstInstall": true},
); );
var downloadDetails = (await decodeJsonBody(res1.bodyBytes))['body']; var downloadDetails = (await decodeJsonBody(res1.bodyBytes))['body'];
if (res1.statusCode != 200 || downloadDetails['apkUrl'] == null) { if (res1.statusCode != 200 || downloadDetails['downloadUrls'][0]['url'] == null) {
throw NoAPKError(); throw NoAPKError();
} }
return APKDetails( return APKDetails(
version, version,
getApkUrlsFromUrls([ getApkUrlsFromUrls([
(downloadDetails['apkUrl'] as String).replaceAll( (downloadDetails['downloadUrls'][0]['url'] as String).replaceAll(
RegExp('\\.zip\$'), RegExp('\\.zip\$'),
'.apk', '.apk',
), ),