Minor fixes

This commit is contained in:
世界 2021-02-02 01:24:58 +08:00
parent 3b9f39167f
commit b54a41dc6c
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
7 changed files with 134 additions and 104 deletions

View File

@ -1,8 +1,11 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
def verName = "7.4.2-preview-5"
def verCode = 172
def verName = "7.4.2-preview-6"
def verCode = 174
def officialVer = "7.4.2"
def officialCode = 2227
def serviceAccountCredentialsFile = rootProject.file("service_account_credentials.json")
@ -161,6 +164,9 @@ android {
appHash = properties.getProperty("TELEGRAM_APP_HASH") ?: System.getenv("TELEGRAM_APP_HASH") ?: appHash
}
buildConfigField 'String', 'OFFICIAL_VERSION', "\"" + officialVer + "\""
buildConfigField 'int', 'OFFICIAL_VERSION_CODE', officialCode + ""
buildConfigField 'int', 'APP_ID', appId
buildConfigField 'String', 'APP_HASH', "\"" + appHash + "\""

View File

@ -7604,7 +7604,7 @@ public class MessagesController extends BaseController implements NotificationCe
migratingDialogs = false;
getNotificationCenter().postNotificationName(NotificationCenter.needReloadRecentDialogsSearch);
} else {
generateUpdateMessage();
// generateUpdateMessage();
if (!added && loadType == DIALOGS_LOAD_TYPE_CACHE && dialogsEndReached.get(folderId)) {
loadDialogs(folderId, 0, count, false);
}

View File

@ -66,6 +66,7 @@ public class UserConfig extends BaseController {
public long lastUpdateCheckTime;
public long autoDownloadConfigLoadTime;
public boolean isBot;
public boolean official;
public volatile byte[] savedPasswordHash;
public volatile byte[] savedSaltedPassword;
@ -151,6 +152,8 @@ public class UserConfig extends BaseController {
editor.putInt("sharingMyLocationUntil", sharingMyLocationUntil);
editor.putInt("lastMyLocationShareTime", lastMyLocationShareTime);
editor.putBoolean("isBot", isBot);
editor.putBoolean("official", official);
editor.putBoolean("filtersLoaded", filtersLoaded);
if (tonEncryptedData != null) {
editor.putString("tonEncryptedData", tonEncryptedData);
@ -303,6 +306,7 @@ public class UserConfig extends BaseController {
autoDownloadConfigLoadTime = preferences.getLong("autoDownloadConfigLoadTime", 0);
hasValidDialogLoadIds = preferences.contains("2dialogsLoadOffsetId") || preferences.getBoolean("hasValidDialogLoadIds", false);
isBot = preferences.getBoolean("isBot",false);
official = preferences.getBoolean("official", false);
tonEncryptedData = preferences.getString("tonEncryptedData", null);
tonPublicKey = preferences.getString("tonPublicKey", null);
tonKeyName = preferences.getString("tonKeyName", "walletKey" + currentAccount);

View File

@ -2,7 +2,6 @@ package org.telegram.tgnet;
import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.os.AsyncTask;
import android.os.Build;
import android.os.SystemClock;
@ -52,8 +51,6 @@ import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.parts.ProxySwitcher;
import tw.nekomimi.nekogram.utils.DnsFactory;
//import org.telegram.messenger.BuildConfig;
public class ConnectionsManager extends BaseController {
public final static int ConnectionTypeGeneric = 1;
@ -171,21 +168,34 @@ public class ConnectionsManager extends BaseController {
systemLangCode = LocaleController.getSystemLocaleStringIso639().toLowerCase();
langCode = LocaleController.getLocaleStringIso639().toLowerCase();
deviceModel = Build.MANUFACTURER + Build.MODEL;
PackageInfo pInfo = ApplicationLoader.applicationContext.getPackageManager().getPackageInfo(ApplicationLoader.applicationContext.getPackageName(), 0);
appVersion = pInfo.versionName + " (" + pInfo.versionCode + ")";
if (BuildVars.DEBUG_PRIVATE_VERSION) {
appVersion += " pbeta";
} else if (BuildVars.DEBUG_VERSION) {
appVersion += " beta";
}
systemVersion = "SDK " + Build.VERSION.SDK_INT;
} catch (Exception e) {
systemLangCode = "en";
langCode = "";
deviceModel = "Android unknown";
appVersion = "App version unknown";
systemVersion = "SDK " + Build.VERSION.SDK_INT;
}
getUserConfig().loadConfig();
int version;
int appId;
String fingerprint;
if (getUserConfig().official || !getUserConfig().isClientActivated()) {
fingerprint = "49C1522548EBACD46CE322B6FD47F6092BB745D0F88082145CAF35E14DCC38E1";
version = BuildConfig.OFFICIAL_VERSION_CODE;
appId = BuildVars.OFFICAL_APP_ID;
appVersion = BuildConfig.OFFICIAL_VERSION + " (" + BuildConfig.OFFICIAL_VERSION_CODE * 10 + 9 + ")";
if (BuildVars.DEBUG_VERSION) {
appVersion += " beta";
}
} else {
fingerprint = AndroidUtilities.getCertificateSHA256Fingerprint();
version = BuildConfig.VERSION_CODE;
appId = BuildConfig.APP_ID;
appVersion = BuildConfig.VERSION_NAME + " (" + BuildConfig.VERSION_CODE + ")";
}
if (systemLangCode.trim().length() == 0) {
systemLangCode = "en";
}
@ -198,16 +208,13 @@ public class ConnectionsManager extends BaseController {
if (systemVersion.trim().length() == 0) {
systemVersion = "SDK Unknown";
}
getUserConfig().loadConfig();
String pushString = SharedConfig.pushString;
if (TextUtils.isEmpty(pushString) && !TextUtils.isEmpty(SharedConfig.pushStringStatus)) {
pushString = SharedConfig.pushStringStatus;
}
String fingerprint = AndroidUtilities.getCertificateSHA256Fingerprint();
int timezoneOffset = (TimeZone.getDefault().getRawOffset() + TimeZone.getDefault().getDSTSavings()) / 1000;
init(BuildVars.BUILD_VERSION, TLRPC.LAYER, BuildConfig.APP_ID, deviceModel, systemVersion, appVersion, langCode, systemLangCode, configPath, FileLog.getNetworkLogPath(), pushString, fingerprint, timezoneOffset, getUserConfig().getClientUserId(), enablePushConnection);
init(version, TLRPC.LAYER, appId, deviceModel, systemVersion, appVersion, langCode, systemLangCode, configPath, FileLog.getNetworkLogPath(), pushString, fingerprint, timezoneOffset, getUserConfig().getClientUserId(), enablePushConnection);
}
public boolean isPushConnectionEnabled() {

View File

@ -3439,7 +3439,13 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
UIUtil.runOnIoDispatcher(() -> {
String replaced;
if (useRegex) {
replaced = ReUtil.replaceAll(finalText, originText, replaceText);
try {
replaced = ReUtil.replaceAll(finalText, originText, replaceText);
} catch (Exception e) {
UIUtil.runOnUIThread(progress::dismiss);
AlertUtil.showToast(e);
return;
}
} else {
replaced = StrUtil.replace(finalText, originText, replaceText);
}

View File

@ -111,7 +111,6 @@ import org.telegram.ui.Components.LayoutHelper;
import org.telegram.ui.Components.ProxyDrawable;
import org.telegram.ui.Components.RadialProgressView;
import org.telegram.ui.Components.SlideView;
import org.telegram.ui.Components.VerticalPositionAutoAnimator;
import java.io.BufferedReader;
import java.io.InputStreamReader;
@ -810,12 +809,14 @@ public class LoginActivity extends BaseFragment implements NotificationCenter.No
exportLoginTokenRequest.api_id = NekoXConfig.currentAppId();
exportLoginTokenRequest.api_hash = NekoXConfig.currentAppHash();
exportLoginTokenRequest.except_ids = new ArrayList<>();
for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) {
UserConfig userConfig = UserConfig.getInstance(a);
if (!userConfig.isClientActivated()) {
continue;
if (NekoXConfig.customApi == 0) {
for (int a = 0; a < UserConfig.MAX_ACCOUNT_COUNT; a++) {
UserConfig userConfig = UserConfig.getInstance(a);
if (!userConfig.isClientActivated()) {
continue;
}
exportLoginTokenRequest.except_ids.add(a);
}
exportLoginTokenRequest.except_ids.add(a);
}
}
@ -1551,6 +1552,7 @@ public class LoginActivity extends BaseFragment implements NotificationCenter.No
ConnectionsManager.getInstance(currentAccount).setUserId(res.user.id);
UserConfig.getInstance(currentAccount).clearConfig();
MessagesController.getInstance(currentAccount).cleanup();
UserConfig.getInstance(currentAccount).official = NekoXConfig.currentAppId() == BuildVars.OFFICAL_APP_ID;
UserConfig.getInstance(currentAccount).syncContacts = syncContacts;
UserConfig.getInstance(currentAccount).setCurrentUser(res.user);
UserConfig.getInstance(currentAccount).saveConfig(true);

View File

@ -58,6 +58,10 @@ import java.util.ArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.utils.AlertUtil;
public class SessionsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
private ListAdapter listAdapter;
@ -115,7 +119,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
TLRPC.TL_authorization newAuthorizationToOpen;
@Override
public View createView(Context context) {
public View createView(Context context) {
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
actionBar.setAllowOverlayTitle(true);
if (currentType == 0) {
@ -288,18 +292,70 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
if (button != null) {
button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
}
} else if (position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow) {
} else if (position == currentSessionRow || position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
final boolean[] param = new boolean[1];
String buttonText;
if (currentType == 0) {
builder.setMessage(LocaleController.getString("TerminateSessionText", R.string.TerminateSessionText));
builder.setTitle(LocaleController.getString("AreYouSureSessionTitle", R.string.AreYouSureSessionTitle));
buttonText = LocaleController.getString("Terminate", R.string.Terminate);
final TLRPC.TL_authorization authorization;
if (position == currentSessionRow) {
authorization = currentSession;
} else if (position >= otherSessionsStartRow && position < otherSessionsEndRow) {
authorization = (TLRPC.TL_authorization) sessions.get(position - otherSessionsStartRow);
} else {
authorization = (TLRPC.TL_authorization) passwordSessions.get(position - passwordSessionsStartRow);
}
BottomBuilder builder = new BottomBuilder(getParentActivity());
String title = authorization.app_name + " " + authorization.app_version + "\n";
title += authorization.device_model + ", " + authorization.system_version + "\n";
title += "Login: " + LocaleController.getInstance().chatFullDate.format(authorization.date_created * 1000L) + "\n";
title += "Active: " + LocaleController.getInstance().chatFullDate.format(authorization.date_active * 1000L) + "\n";
if (!authorization.official_app) {
title += "Unofficial application " + authorization.api_id + "\n";
}
title += authorization.ip + " - " + authorization.region + " " + authorization.country;
if (!authorization.current) {
builder.addTitle(LocaleController.getString("TerminateSessionText", R.string.TerminateSessionText), title);
builder.addItem(LocaleController.getString("Terminate", R.string.Terminate), R.drawable.baseline_delete_forever_24, true, __ -> {
TLRPC.TL_account_resetAuthorization req = new TLRPC.TL_account_resetAuthorization();
req.hash = authorization.hash;
ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
if (error != null) {
AlertUtil.showToast(error);
return;
}
sessions.remove(authorization);
passwordSessions.remove(authorization);
updateRows();
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
}));
return Unit.INSTANCE;
});
} else {
builder.addTitle(title);
}
builder.addCancelItem();
String finalTitle = title;
builder.addItem(LocaleController.getString("Copy", R.string.Copy), R.drawable.baseline_content_copy_24, __ -> {
AlertUtil.copyAndAlert(finalTitle);
return Unit.INSTANCE;
});
builder.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
final boolean[] param = new boolean[1];
String buttonText;
final TLRPC.TL_webAuthorization authorization = (TLRPC.TL_webAuthorization) sessions.get(position - otherSessionsStartRow);
builder.setMessage(LocaleController.formatString("TerminateWebSessionText", R.string.TerminateWebSessionText, authorization.domain));
@ -331,41 +387,14 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
});
builder.setCustomViewOffset(16);
builder.setView(frameLayout1);
}
builder.setPositiveButton(buttonText, (dialogInterface, option) -> {
if (getParentActivity() == null) {
return;
}
final AlertDialog progressDialog = new AlertDialog(getParentActivity(), 3);
progressDialog.setCanCacnel(false);
progressDialog.show();
if (currentType == 0) {
final TLRPC.TL_authorization authorization;
if (position >= otherSessionsStartRow && position < otherSessionsEndRow) {
authorization = (TLRPC.TL_authorization) sessions.get(position - otherSessionsStartRow);
} else {
authorization = (TLRPC.TL_authorization) passwordSessions.get(position - passwordSessionsStartRow);
builder.setPositiveButton(buttonText, (dialogInterface, option) -> {
if (getParentActivity() == null) {
return;
}
TLRPC.TL_account_resetAuthorization req = new TLRPC.TL_account_resetAuthorization();
req.hash = authorization.hash;
ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
try {
progressDialog.dismiss();
} catch (Exception e) {
FileLog.e(e);
}
if (error == null) {
sessions.remove(authorization);
passwordSessions.remove(authorization);
updateRows();
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
}
}));
} else {
final TLRPC.TL_webAuthorization authorization = (TLRPC.TL_webAuthorization) sessions.get(position - otherSessionsStartRow);
final AlertDialog progressDialog = new AlertDialog(getParentActivity(), 3);
progressDialog.setCanCacnel(false);
progressDialog.show();
TLRPC.TL_account_resetWebAuthorization req = new TLRPC.TL_account_resetWebAuthorization();
req.hash = authorization.hash;
ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
@ -385,48 +414,23 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
if (param[0]) {
MessagesController.getInstance(currentAccount).blockPeer(authorization.bot_id);
}
});
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
AlertDialog alertDialog = builder.create();
showDialog(alertDialog);
TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
if (button != null) {
button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
}
});
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
AlertDialog alertDialog = builder.create();
showDialog(alertDialog);
TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
if (button != null) {
button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
}
if (newAuthorizationToOpen != null) {
AndroidUtilities.runOnUIThread(() -> undoView.showWithAction(0, UndoView.ACTION_QR_SESSION_ACCEPTED, newAuthorizationToOpen), 3000L);
}
}
});
if (currentType == 0) {
undoView = new UndoView(context) {
@Override
public void hide(boolean apply, int animated) {
if (!apply) {
TLRPC.TL_authorization authorization = (TLRPC.TL_authorization) getCurrentInfoObject();
TLRPC.TL_account_resetAuthorization req = new TLRPC.TL_account_resetAuthorization();
req.hash = authorization.hash;
ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
if (error == null) {
sessions.remove(authorization);
passwordSessions.remove(authorization);
updateRows();
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
loadSessions(true);
}
}));
}
super.hide(apply, animated);
}
};
frameLayout.addView(undoView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 8, 0, 8, 8));
}
if (newAuthorizationToOpen != null) {
AndroidUtilities.runOnUIThread(() -> undoView.showWithAction(0, UndoView.ACTION_QR_SESSION_ACCEPTED, newAuthorizationToOpen), 3000L);
}
return fragmentView;
}
@ -578,7 +582,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
@Override
public boolean isEnabled(RecyclerView.ViewHolder holder) {
int position = holder.getAdapterPosition();
return position == terminateAllSessionsRow || position == qrCodeRow || position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow;
return position == currentSessionRow || position == terminateAllSessionsRow || position == qrCodeRow || position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow;
}
@Override
@ -709,6 +713,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter
}
return 0;
}
}
@Override