mirror of https://github.com/NekoX-Dev/NekoX.git
Fixes
This commit is contained in:
parent
93f3f957df
commit
bd17bab6f0
|
@ -26,6 +26,10 @@ jobs:
|
|||
mkdir -p $HOME/.ssh
|
||||
echo "${{ secrets.SSH_KEY }}" > $HOME/.ssh/id_rsa
|
||||
chmod 600 $HOME/.ssh/id_rsa
|
||||
cat > service_account_credentials.json << EOF
|
||||
${{ secrets.GOOGLE_ACCOUNT_SERVICE }}
|
||||
EOF
|
||||
ref="${{ github.ref }}"
|
||||
ref=${ref/"refs/tags/"/}
|
||||
./bin/release.sh "$ref"
|
||||
./bin/release.sh "$ref"
|
||||
./bin/publish_play.sh
|
11
README.md
11
README.md
|
@ -9,7 +9,6 @@ NekoX is an open source third-party Telegram android app.
|
|||
- Chat Group (Persian) : https://t.me/NekogramX_Persian
|
||||
- FAQ: https://telegra.ph/NekoX-FAQ-03-31
|
||||
- FAQ (Chinese): https://telegra.ph/NekoX-%E5%B8%B8%E8%A6%8B%E5%95%8F%E9%A1%8C-03-31
|
||||
- [Wall of Shame - Nekogram](https://github.com/Nekogram/Nekogram/wiki/Wall-of-Shame)
|
||||
|
||||
## Telegram-FOSS Changes:
|
||||
|
||||
|
@ -34,7 +33,9 @@ NekoX is an open source third-party Telegram android app.
|
|||
- Added the ability to parse locations from intents containing a `geo:<lat>,<lon>,<zoom>` string
|
||||
- Force static map previews from Telegram
|
||||
|
||||
## Nekogram Changes
|
||||
## Old 0penSource Nekogram Changes
|
||||
|
||||
We regret that [Nekogram](https://github.com/Nekogram/Nekogram-issue-tracker) is no longer open source, but uses drklo/master to [disguise open source](https://github.com/Nekogram/Android).
|
||||
|
||||
- Repeat others' message in one click.
|
||||
- Save to saved messages in one click.
|
||||
|
@ -126,7 +127,7 @@ If you don't use NekoX's APP_ID and APP_HASH, you need to register a physical fi
|
|||
|
||||
OK, a version without firebase cloud messaging and precompiled native libraries, maybe this makes you feel more free, or your phone does not have Google services.
|
||||
|
||||
To compile the foss version, please refer to [build script](.github/workflows/build.yml).
|
||||
To compile the foss version, please refer to [build script](./update_jni.sh).
|
||||
|
||||
### Build Variants
|
||||
|
||||
|
@ -137,13 +138,13 @@ Available variant list:
|
|||
|
||||
## Localization
|
||||
|
||||
Join project at https://nekox.crowdin.com/nekox and https://neko.crowdin.com/ .
|
||||
Join project at https://nekox.crowdin.com/nekox.
|
||||
|
||||
## Credits
|
||||
|
||||
<ul>
|
||||
<li>Telegram-FOSS: <a href="https://github.com/Telegram-FOSS-Team/Telegram-FOSS/blob/master/LICENSE">GPLv2</a></li>
|
||||
<li>Nekogram: <a href="https://github.com/Nekogram/Nekogram/blob/master/LICENSE">GPLv2</a></li>
|
||||
<li><del>Nekogram: <a href="https://github.com/Nekogram/Nekogram/blob/master/LICENSE">GPLv2</a></del> (No longer open source)</li>
|
||||
<li>v2rayNG: <a href="https://github.com/2dust/v2rayNG/blob/master/LICENSE">GPLv3</a></li>
|
||||
<li>AndroidLibV2rayLite: <a href="https://github.com/2dust/AndroidLibV2rayLite/blob/master/LICENSE">LGPLv3</a></li>
|
||||
<li>shadowsocks-android: <a href="https://github.com/shadowsocks/shadowsocks-android/blob/master/LICENSE">GPLv3</a></li>
|
||||
|
|
|
@ -31,6 +31,8 @@ void setupPlay() {
|
|||
|
||||
defaultToAppBundles = true
|
||||
|
||||
userFraction = 1
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -65,8 +67,62 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
def verName = "6.2.0.3-rc02"
|
||||
def verCode = 55
|
||||
dependencies {
|
||||
|
||||
implementation 'androidx.core:core:1.5.0-alpha01'
|
||||
implementation 'androidx.palette:palette:1.0.0'
|
||||
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.2.0'
|
||||
implementation "androidx.interpolator:interpolator:1.0.0"
|
||||
implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
|
||||
implementation 'com.android.support:multidex:1.0.3'
|
||||
|
||||
// replace zxing with latest
|
||||
// TODO: fix problem with android L
|
||||
implementation 'com.google.zxing:core:3.4.0'
|
||||
|
||||
compileOnly 'org.checkerframework:checker-qual:3.5.0'
|
||||
compileOnly 'org.checkerframework:checker-compat-qual:2.5.5'
|
||||
|
||||
// don't change this :)
|
||||
//noinspection GradleDependency
|
||||
implementation 'com.googlecode.mp4parser:isoparser:1.0.6'
|
||||
|
||||
implementation 'com.stripe:stripe-android:2.0.2'
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation 'org.osmdroid:osmdroid-android:6.1.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72"
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7'
|
||||
|
||||
implementation "com.squareup.okhttp3:okhttp:$okHttpVersion"
|
||||
implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:$okHttpVersion"
|
||||
implementation 'dnsjava:dnsjava:3.2.1'
|
||||
implementation 'org.dizitart:nitrite:3.4.2'
|
||||
|
||||
implementation 'cn.hutool:hutool-core:5.3.8'
|
||||
implementation 'cn.hutool:hutool-crypto:5.3.8'
|
||||
|
||||
implementation 'org.tukaani:xz:1.8'
|
||||
|
||||
compileOnly files('libs/libv2ray.aar')
|
||||
|
||||
compileOnly "com.google.firebase:firebase-messaging:$fcmVersion"
|
||||
compileOnly "com.google.firebase:firebase-crashlytics:$crashlyticsVersion"
|
||||
compileOnly "com.google.android.play:core:$playCoreVersion"
|
||||
|
||||
compileOnly 'com.vanniktech:emoji-ios:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-google:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-twitter:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-facebook:0.7.0-SNAPSHOT'
|
||||
|
||||
releaseImplementation "com.google.firebase:firebase-messaging:$fcmVersion"
|
||||
releaseImplementation "com.google.firebase:firebase-crashlytics:$crashlyticsVersion"
|
||||
releaseImplementation "com.google.android.play:core:$playCoreVersion"
|
||||
|
||||
}
|
||||
|
||||
def verName = "6.2.0.3-rc03"
|
||||
def verCode = 56
|
||||
|
||||
task writeUpdateInfo {
|
||||
|
||||
|
@ -75,7 +131,7 @@ task writeUpdateInfo {
|
|||
info.set("version", verName)
|
||||
info.set("versionCode", verCode)
|
||||
info.set("defaultFlavor", "full")
|
||||
info.set("defaultApkName", "NekoX-full-blobEmoji-arm64-v8a-release.apk.xz")
|
||||
info.set("defaultApkName", "NekoX-full-arm64-v8a-release.apk.xz")
|
||||
|
||||
FileUtil.writeUtf8String(info.toStringPretty(), new File("build/update.json"))
|
||||
|
||||
|
@ -267,45 +323,75 @@ android {
|
|||
dxUtilPath += ".bat"
|
||||
}
|
||||
|
||||
flavorDimensions "version", "emoji"
|
||||
flavorDimensions "version"
|
||||
|
||||
productFlavors {
|
||||
|
||||
mini {
|
||||
dimension "version"
|
||||
versionNameSuffix '-mini'
|
||||
}
|
||||
|
||||
full {
|
||||
dimension "version"
|
||||
miniNoEmoji {
|
||||
versionNameSuffix '-mini-no-emoji'
|
||||
}
|
||||
|
||||
noEmoji {
|
||||
dimension "emoji"
|
||||
miniAppleEmoji {
|
||||
versionNameSuffix '-mini-apple-emoji'
|
||||
}
|
||||
|
||||
blobEmoji {
|
||||
dimension "emoji"
|
||||
miniNotoEmoji {
|
||||
versionNameSuffix '-mini-noto-emoji'
|
||||
}
|
||||
|
||||
appleEmoji {
|
||||
dimension "emoji"
|
||||
miniTwitterEmoji {
|
||||
versionNameSuffix '-mini-twitter-emoji'
|
||||
}
|
||||
|
||||
notoEmoji {
|
||||
dimension "emoji"
|
||||
miniFacebookEmoji {
|
||||
versionNameSuffix '-mini-facebook-emoji'
|
||||
}
|
||||
|
||||
twitterEmoji {
|
||||
dimension "emoji"
|
||||
full {}
|
||||
fullNoEmoji {
|
||||
versionNameSuffix '-full-no-emoji'
|
||||
}
|
||||
|
||||
facebookEmoji {
|
||||
dimension "emoji"
|
||||
fullAppleEmoji {
|
||||
versionNameSuffix '-full-apple-emoji'
|
||||
}
|
||||
fullNotoEmoji {
|
||||
versionNameSuffix '-full-noto-emoji'
|
||||
}
|
||||
fullTwitterEmoji {
|
||||
versionNameSuffix '-full-twitter-emoji'
|
||||
}
|
||||
fullFacebookEmoji {
|
||||
versionNameSuffix '-full-facebook-emoji'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sourceSets.blobEmoji.assets.srcDirs = ["src/main/assets", "src/emojis/blob"]
|
||||
sourceSets.all { set ->
|
||||
if (set.name.startsWith("full")) {
|
||||
set.dependencies {
|
||||
implementation files('libs/libv2ray.aar')
|
||||
implementation files('libs/ss-rust-release.aar')
|
||||
implementation files('libs/ssr-libev-release.aar')
|
||||
}
|
||||
}
|
||||
if (set.name.matches("(mini|full).*")) {
|
||||
if (set.name.contains("Apple")) {
|
||||
set.dependencies {
|
||||
implementation 'com.vanniktech:emoji-ios:0.7.0-SNAPSHOT'
|
||||
}
|
||||
} else if (set.name.contains("Noto")) {
|
||||
set.dependencies {
|
||||
implementation 'com.vanniktech:emoji-google:0.7.0-SNAPSHOT'
|
||||
}
|
||||
} else if (set.name.contains("Twitter")) {
|
||||
set.dependencies {
|
||||
implementation 'com.vanniktech:emoji-twitter:0.7.0-SNAPSHOT'
|
||||
}
|
||||
} else if (set.name.contains("Facebook")) {
|
||||
set.dependencies {
|
||||
implementation 'com.vanniktech:emoji-facebook:0.7.0-SNAPSHOT'
|
||||
}
|
||||
} else if (!set.name.contains("NoEmoji")) {
|
||||
set.assets.srcDirs = ["src/main/assets", "src/emojis/blob"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.all { task ->
|
||||
if (((task.name.endsWith('Ndk') || task.name.startsWith('generateJsonModel') || task.name.startsWith('externalNativeBuild'))) && !task.name.contains("Foss")) {
|
||||
|
@ -379,70 +465,6 @@ android {
|
|||
|
||||
}
|
||||
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation 'androidx.core:core:1.5.0-alpha01'
|
||||
implementation 'androidx.palette:palette:1.0.0'
|
||||
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.2.0'
|
||||
implementation "androidx.interpolator:interpolator:1.0.0"
|
||||
implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
|
||||
implementation 'com.android.support:multidex:1.0.3'
|
||||
|
||||
// replace zxing with latest
|
||||
// TODO: fix problem with android L
|
||||
implementation 'com.google.zxing:core:3.4.0'
|
||||
|
||||
compileOnly 'org.checkerframework:checker-qual:3.5.0'
|
||||
compileOnly 'org.checkerframework:checker-compat-qual:2.5.5'
|
||||
|
||||
// don't change this :)
|
||||
//noinspection GradleDependency
|
||||
implementation 'com.googlecode.mp4parser:isoparser:1.0.6'
|
||||
|
||||
implementation 'com.stripe:stripe-android:2.0.2'
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation 'org.osmdroid:osmdroid-android:6.1.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72"
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7'
|
||||
|
||||
implementation "com.squareup.okhttp3:okhttp:$okHttpVersion"
|
||||
implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:$okHttpVersion"
|
||||
implementation 'dnsjava:dnsjava:3.2.1'
|
||||
implementation 'org.dizitart:nitrite:3.4.2'
|
||||
|
||||
implementation 'cn.hutool:hutool-core:5.3.8'
|
||||
implementation 'cn.hutool:hutool-crypto:5.3.8'
|
||||
|
||||
implementation 'org.tukaani:xz:1.8'
|
||||
|
||||
compileOnly files('libs/libv2ray.aar')
|
||||
|
||||
fullImplementation files('libs/libv2ray.aar')
|
||||
fullImplementation files('libs/ss-rust-release.aar')
|
||||
fullImplementation files('libs/ssr-libev-release.aar')
|
||||
|
||||
compileOnly "com.google.firebase:firebase-messaging:$fcmVersion"
|
||||
compileOnly "com.google.firebase:firebase-crashlytics:$crashlyticsVersion"
|
||||
compileOnly "com.google.android.play:core:$playCoreVersion"
|
||||
|
||||
compileOnly 'com.vanniktech:emoji-ios:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-google:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-twitter:0.7.0-SNAPSHOT'
|
||||
compileOnly 'com.vanniktech:emoji-facebook:0.7.0-SNAPSHOT'
|
||||
|
||||
appleEmojiImplementation 'com.vanniktech:emoji-ios:0.7.0-SNAPSHOT'
|
||||
notoEmojiImplementation 'com.vanniktech:emoji-google:0.7.0-SNAPSHOT'
|
||||
twitterEmojiImplementation 'com.vanniktech:emoji-twitter:0.7.0-SNAPSHOT'
|
||||
facebookEmojiImplementation 'com.vanniktech:emoji-facebook:0.7.0-SNAPSHOT'
|
||||
|
||||
releaseImplementation "com.google.firebase:firebase-messaging:$fcmVersion"
|
||||
releaseImplementation "com.google.firebase:firebase-crashlytics:$crashlyticsVersion"
|
||||
releaseImplementation "com.google.android.play:core:$playCoreVersion"
|
||||
|
||||
}
|
||||
|
||||
private static File findJavaHome() {
|
||||
String javaPath = System.getProperty("java.home")
|
||||
if (javaPath != null) {
|
||||
|
|
|
@ -45,8 +45,8 @@ import org.telegram.messenger.R
|
|||
val lookupNames get() = lookup.values.map {
|
||||
if (it.label.isNotBlank()) {
|
||||
"${it.label} (${it.id})"
|
||||
} else {
|
||||
} else if (it.id.isNotBlank()) {
|
||||
it.id
|
||||
}
|
||||
} else ""
|
||||
}.map { it.takeIf { it.isNotBlank() } ?: LocaleController.getString("Disable", R.string.Disable) }.toTypedArray()
|
||||
}
|
||||
|
|
|
@ -373,7 +373,6 @@ public class AlertsCreator {
|
|||
builder.addTitle(LocaleController.getString("Language", R.string.Language), mkTransSpan(str, language, builder));
|
||||
builder.addCancelButton();
|
||||
builder.addButton(LocaleController.getString("SETTINGS", R.string.SETTINGS), (__) -> {
|
||||
builder.dismiss();
|
||||
activity.presentFragment(new LanguageSelectActivity());
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
|
@ -417,7 +416,6 @@ public class AlertsCreator {
|
|||
}
|
||||
LocaleController.getInstance().applyLanguage(localeInfo, true, false, false, true, UserConfig.selectedAccount);
|
||||
activity.rebuildAllFragments(true);
|
||||
builder.dismiss();
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
builder.addCancelButton();
|
||||
|
|
|
@ -188,8 +188,6 @@ public class LanguageSelectActivity extends BaseFragment implements Notification
|
|||
|
||||
builder.addItem(LocaleController.getString("BotShare",R.string.BotShare),R.drawable.baseline_send_24,false,(__) -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
ShareUtil.shareText(getParentActivity(),"https://t.me/setlanguage/" + localeInfo.shortName.replace('_','-'));
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
@ -200,8 +198,6 @@ public class LanguageSelectActivity extends BaseFragment implements Notification
|
|||
|
||||
builder.addItem(LocaleController.getString("DeleteLocalizationTitle", R.string.DeleteLocalizationTitle), R.drawable.baseline_delete_24, true, (__) -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
AlertUtil.showConfirm(getParentActivity(),
|
||||
LocaleController.getString("DeleteLocalizationTitle", R.string.DeleteLocalizationTitle),
|
||||
R.drawable.baseline_delete_24,
|
||||
|
|
|
@ -530,8 +530,6 @@ public class LoginActivity extends BaseFragment implements NotificationCenter.No
|
|||
NekoXConfig.customApi = target;
|
||||
NekoXConfig.saveCustomApi();
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
@ -891,8 +889,6 @@ public class LoginActivity extends BaseFragment implements NotificationCenter.No
|
|||
|
||||
}
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
|
|
@ -85,6 +85,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import kotlin.Unit;
|
||||
import okhttp3.HttpUrl;
|
||||
import tw.nekomimi.nekogram.BottomBuilder;
|
||||
|
@ -1121,8 +1122,6 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
|
|||
|
||||
if (sub.internal) return false;
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
presentFragment(new SubSettingsActivity(sub));
|
||||
|
||||
return true;
|
||||
|
@ -1133,15 +1132,17 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
|
|||
|
||||
builder.addButton(LocaleController.getString("Add", R.string.Add), false, true, (it) -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
presentFragment(new SubSettingsActivity());
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
||||
builder.addButton(LocaleController.getString("Update", R.string.Update), (it) -> {
|
||||
String updateStr = LocaleController.getString("Update", R.string.Update);
|
||||
updateStr = updateStr.toLowerCase();
|
||||
updateStr = StrUtil.upperFirst(updateStr);
|
||||
|
||||
builder.addButton(updateStr, (it) -> {
|
||||
|
||||
AlertDialog pro = AlertUtil.showProgress(getParentActivity(), LocaleController.getString("SubscriptionUpdating", R.string.SubscriptionUpdating));
|
||||
AtomicBoolean canceled = new AtomicBoolean();
|
||||
|
@ -1179,14 +1180,7 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
|
|||
|
||||
updateRows(true);
|
||||
|
||||
UIUtil.runOnUIThread(() -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
pro.dismiss();
|
||||
|
||||
});
|
||||
|
||||
UIUtil.runOnUIThread(pro::dismiss);
|
||||
|
||||
});
|
||||
|
||||
|
@ -1196,8 +1190,6 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
|
|||
|
||||
builder.addButton(LocaleController.getString("OK", R.string.OK), (it) -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
if (!toChange.isEmpty()) {
|
||||
|
||||
AlertDialog pro = AlertUtil.showProgress(getParentActivity());
|
||||
|
|
|
@ -529,13 +529,11 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
|
|||
builder.addTitle(message);
|
||||
String finalMessage = message;
|
||||
builder.addItem(LocaleController.getString("Copy", R.string.Copy), R.drawable.baseline_content_copy_24, (it) -> {
|
||||
builder.dismiss();
|
||||
AndroidUtilities.addToClipboard(finalMessage);
|
||||
AlertUtil.showToast(LocaleController.getString("TextCopied", R.string.TextCopied));
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
builder.addItem(BuildVars.LOGS_ENABLED ? LocaleController.getString("DebugMenuDisableLogs", R.string.DebugMenuDisableLogs) : LocaleController.getString("DebugMenuEnableLogs", R.string.DebugMenuEnableLogs), R.drawable.baseline_bug_report_24, (it) -> {
|
||||
builder.dismiss();
|
||||
BuildVars.LOGS_ENABLED = !BuildVars.LOGS_ENABLED;
|
||||
SharedPreferences sharedPreferences = ApplicationLoader.applicationContext.getSharedPreferences("systemConfig", Context.MODE_PRIVATE);
|
||||
sharedPreferences.edit().putBoolean("logsEnabled", BuildVars.LOGS_ENABLED).apply();
|
||||
|
@ -544,25 +542,21 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
|
|||
});
|
||||
if (!BuildVars.isUnknown) {
|
||||
builder.addItem(LocaleController.getString("CheckUpdate", R.string.CheckUpdate), R.drawable.baseline_system_update_24, (it) -> {
|
||||
builder.dismiss();
|
||||
UpdateChecksKt.checkUpdate(getParentActivity());
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
}
|
||||
if (BuildConfig.BUILD_TYPE.startsWith("release")) {
|
||||
builder.addItem(LocaleController.getString("SwitchVersion", R.string.SwitchVersion), R.drawable.baseline_replay_24, (it) -> {
|
||||
builder.dismiss();
|
||||
Browser.openUrl(getParentActivity(), "https://github.com/NekoX-Dev/NekoX/releases");
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
}
|
||||
if (NekoXConfig.developerModeEntrance || NekoXConfig.developerMode) {
|
||||
builder.addItem(LocaleController.getString("DeveloperSettings", R.string.DeveloperSettings), R.drawable.baseline_developer_mode_24, (it) -> {
|
||||
builder.dismiss();
|
||||
BottomBuilder devBuilder = new BottomBuilder(getParentActivity());
|
||||
devBuilder.addTitle(LocaleController.getString("DevModeTitle", R.string.DevModeTitle), LocaleController.getString("DevModeNotice", R.string.DevModeNotice));
|
||||
devBuilder.addItem(LocaleController.getString("Continue", R.string.Continue), R.drawable.baseline_warning_24, true, (__) -> {
|
||||
devBuilder.dismiss();
|
||||
presentFragment(new NekoXSettingActivity());
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
|
|
|
@ -526,8 +526,6 @@ public class StickersActivity extends BaseFragment implements NotificationCenter
|
|||
|
||||
exportButton.set(builder.addButton(LocaleController.getString("Export", R.string.ExportStickers), (it) -> {
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
exportStickersFinal(exportSets.get(), exportArchived.get());
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
|
|
@ -228,14 +228,14 @@ class BottomBuilder(val ctx: Context) {
|
|||
@JvmOverloads
|
||||
fun addCancelItem() {
|
||||
|
||||
addItem(LocaleController.getString("Cancel", R.string.Cancel), R.drawable.baseline_cancel_24) { dismiss() }
|
||||
addItem(LocaleController.getString("Cancel", R.string.Cancel), R.drawable.baseline_cancel_24) {}
|
||||
|
||||
}
|
||||
|
||||
@JvmOverloads
|
||||
fun addCancelButton(left: Boolean = true) {
|
||||
|
||||
addButton(LocaleController.getString("Cancel", R.string.Cancel), left = left) { dismiss() }
|
||||
addButton(LocaleController.getString("Cancel", R.string.Cancel), left = left) {}
|
||||
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ class BottomBuilder(val ctx: Context) {
|
|||
setText(text)
|
||||
typeface = AndroidUtilities.getTypeface("fonts/rmedium.ttf")
|
||||
(if (left) buttonsView else rightButtonsView).addView(this, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP or Gravity.LEFT))
|
||||
setOnClickListener { listener(this) }
|
||||
setOnClickListener { dismiss();listener(this) }
|
||||
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,9 @@ class BottomBuilder(val ctx: Context) {
|
|||
|
||||
setOnClickListener {
|
||||
|
||||
if (listener == null) dismiss() else listener(this)
|
||||
dismiss()
|
||||
|
||||
listener?.invoke(this)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -21,13 +21,13 @@ object EmojiProvider {
|
|||
|
||||
// default use blob
|
||||
@JvmField
|
||||
val isFont = type.contains("Blob")
|
||||
val isFont = !type.contains("Emoji")
|
||||
|
||||
@JvmStatic
|
||||
val font by lazy {
|
||||
if (!isFont) throw IllegalStateException()
|
||||
val resName = when {
|
||||
type.contains("Blob") -> "blob_compat.ttf"
|
||||
!type.contains("Emoji") -> "blob_compat.ttf"
|
||||
else -> throw IllegalStateException()
|
||||
}
|
||||
Typeface.createFromAsset(ApplicationLoader.applicationContext.assets, "fonts/$resName");
|
||||
|
|
|
@ -475,8 +475,6 @@ public class ShadowsocksSettingsActivity extends BaseFragment {
|
|||
|
||||
onPreferenceChange(options.getText().toString());
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
|
|
@ -110,24 +110,18 @@ fun Activity.checkUpdate(force: Boolean = false) {
|
|||
|
||||
UpdateUtil.doUpdate(this, code, updateInfo.getString("defaultFlavor"))
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().remove("ignored_update_at").remove("ignore_update_at").apply()
|
||||
|
||||
}
|
||||
|
||||
builder.addItem(LocaleController.getString("UpdateLater", R.string.UpdateLater), R.drawable.baseline_watch_later_24, false) {
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().putLong("ignored_update_at", System.currentTimeMillis()).apply()
|
||||
|
||||
}
|
||||
|
||||
builder.addItem(LocaleController.getString("Ignore", R.string.Ignore), R.drawable.baseline_block_24, true) {
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().putInt("ignore_update", code).apply()
|
||||
|
||||
}
|
||||
|
|
|
@ -309,8 +309,6 @@ public class NekoGeneralSettingsActivity extends BaseFragment {
|
|||
|
||||
}
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
@ -390,8 +388,6 @@ public class NekoGeneralSettingsActivity extends BaseFragment {
|
|||
|
||||
NekoConfig.setGoogleTranslateKey(key);
|
||||
|
||||
builder.dismiss();
|
||||
|
||||
return Unit.INSTANCE;
|
||||
|
||||
});
|
||||
|
|
|
@ -107,16 +107,7 @@ public class NekoSettingsActivity extends BaseFragment {
|
|||
} else if (position == donateRow) {
|
||||
Browser.openUrl(getParentActivity(), "https://patreon.com/NekoXDev");
|
||||
} else if (position == translationRow) {
|
||||
BottomBuilder builder = new BottomBuilder(getParentActivity());
|
||||
builder.addItem(LocaleController.getString("NekoTrans", R.string.NekoTrans), (__) -> {
|
||||
Browser.openUrl(getParentActivity(), "https://neko.crowdin.com/nekogram");
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
builder.addItem(LocaleController.getString("NekoXTrans", R.string.NekoXTrans), (__) -> {
|
||||
Browser.openUrl(getParentActivity(), "https://nekox.crowdin.com/nekox");
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
builder.show();
|
||||
Browser.openUrl(getParentActivity(), "https://nekox.crowdin.com/nekox");
|
||||
} else if (position == googlePlayRow) {
|
||||
Browser.openUrl(getParentActivity(), "https://play.google.com/store/apps/details?id=nekox.messenger");
|
||||
} else if (position == sourceCodeRow) {
|
||||
|
|
|
@ -24,7 +24,7 @@ object SubManager {
|
|||
enable = public?.enable ?: true
|
||||
|
||||
urls = listOf(
|
||||
"https://gitlab.com/nekohasekai/nekox-proxy-list/-/raw/master/proxy_list",
|
||||
"https://gitlab.com/NekohaSekai/nekox-proxy-list/-/raw/master/proxy_list",
|
||||
"https://nekox-dev.github.io/ProxyList/proxy_list",
|
||||
"https://gitee.com/nekoshizuku/AwesomeRepo/raw/master/proxy_list"
|
||||
)
|
||||
|
|
|
@ -160,8 +160,6 @@ object AlertUtil {
|
|||
|
||||
builder.addItem(button, icon, red) {
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
listener.run()
|
||||
|
||||
}
|
||||
|
|
|
@ -75,24 +75,18 @@ object UpdateUtil {
|
|||
|
||||
doUpdate(ctx, code, updateInfo.getString("defaultFlavor"))
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().remove("ignored_update_at").remove("ignore_update_at").apply()
|
||||
|
||||
}
|
||||
|
||||
builder.addItem(LocaleController.getString("UpdateLater", R.string.UpdateLater), R.drawable.baseline_watch_later_24, false) {
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().putLong("ignored_update_at", System.currentTimeMillis()).apply()
|
||||
|
||||
}
|
||||
|
||||
builder.addItem(LocaleController.getString("Ignore", R.string.Ignore), R.drawable.baseline_block_24, true) {
|
||||
|
||||
builder.dismiss()
|
||||
|
||||
NekoXConfig.preferences.edit().putInt("ignore_update", code).apply()
|
||||
|
||||
}
|
||||
|
|
|
@ -12,5 +12,5 @@ fi
|
|||
|
||||
rm -rf build/apks &&
|
||||
mkdir -p build/apks &&
|
||||
find TMessagesProj -name "*.apk" -exec cp {} build/apks \; &&
|
||||
find TMessagesProj/build/outputs/apk -name "*.apk" -exec cp {} build/apks \; &&
|
||||
ghr -delete -n "$1" "$1" build/apks/
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
rm -rf build/apks &&
|
||||
mkdir -p build/apks &&
|
||||
find TMessagesProj -name "*.apk" -exec cp {} build/apks \; &&
|
||||
find TMessagesProj/build/outputs/apk -name "*.apk" -exec cp {} build/apks \; &&
|
||||
cp build/update.json build/apks &&
|
||||
cd build/apks &&
|
||||
rm *universal* &&
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
./gradlew TMessagesProj:clean \
|
||||
TMessagesProj:assembleFullBlobEmojiRelease \
|
||||
TMessagesProj:assembleFullBlobEmojiReleaseNoGcm \
|
||||
TMessagesProj:assembleMiniBlobEmojiRelease \
|
||||
TMessagesProj:assembleMiniBlobEmojiReleaseNoGcm \
|
||||
TMessagesProj:assembleMiniNoEmojiRelease \
|
||||
TMessagesProj:assembleMiniNoEmojiReleaseNoGcm &&
|
||||
function assemble() {
|
||||
|
||||
./gradlew TMessagesProj:assembleFullRelease \
|
||||
TMessagesProj:assembleFullReleaseNoGcm \
|
||||
TMessagesProj:assembleMiniRelease \
|
||||
TMessagesProj:assembleMiniReleaseNoGcm \
|
||||
TMessagesProj:assembleMiniNoEmojiRelease \
|
||||
TMessagesProj:assembleMiniNoEmojiReleaseNoGcm
|
||||
|
||||
return $?
|
||||
|
||||
}
|
||||
|
||||
#./gradlew TMessagesProj:assembleRelease \
|
||||
# TMessagesProj:assembleReleaseNoGcm
|
||||
|
||||
assemble &&
|
||||
assemble &&
|
||||
./bin/publish_repo_apks.sh &&
|
||||
./bin/publish_release_apks.sh "$1"
|
|
@ -1,5 +1,6 @@
|
|||
#Fri Jul 10 12:31:49 UTC 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
|
||||
|
|
Loading…
Reference in New Issue