mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-22 06:25:14 +01:00
update to 10.14.5 (4945)
This commit is contained in:
parent
a982429401
commit
5fa5549a4a
27 changed files with 266 additions and 123 deletions
|
@ -214,3 +214,23 @@ def getProps(String propName) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
|
|
||||||
|
task checkVisibility {
|
||||||
|
doFirst {
|
||||||
|
def isPrivateBuild = project.gradle.startParameter.taskNames.find { it.contains("HA_private") }
|
||||||
|
def isPublicAllowed = !project.hasProperty("IS_PRIVATE") || !project.property("IS_PRIVATE").toBoolean()
|
||||||
|
if (!isPrivateBuild && !isPublicAllowed) {
|
||||||
|
throw new GradleException("Building public version of private code!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
doLast {
|
||||||
|
if (project.gradle.startParameter.taskNames.find { it.contains("HA_public") }) {
|
||||||
|
def privateBuild = file("${projectDir}_AppHockeyApp/afat/HA_private/app.apk")
|
||||||
|
if (privateBuild.exists()) {
|
||||||
|
privateBuild.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
preBuild.dependsOn checkVisibility
|
|
@ -87,19 +87,6 @@
|
||||||
<action android:name="android.intent.action.VIEW"/>
|
<action android:name="android.intent.action.VIEW"/>
|
||||||
<data android:scheme="ton"/>
|
<data android:scheme="ton"/>
|
||||||
</intent>
|
</intent>
|
||||||
|
|
||||||
<package android:name="com.android.chrome" />
|
|
||||||
<package android:name="org.mozilla.firefox" />
|
|
||||||
<package android:name="com.microsoft.emmx" />
|
|
||||||
<package android:name="com.opera.browser" />
|
|
||||||
<package android:name="com.opera.mini.native" />
|
|
||||||
<package android:name="com.brave.browser" />
|
|
||||||
<package android:name="com.duckduckgo.mobile.android" />
|
|
||||||
<package android:name="com.sec.android.app.sbrowser" />
|
|
||||||
<package android:name="com.vivaldi.browser" />
|
|
||||||
<package android:name="com.kiwibrowser.browser" />
|
|
||||||
<package android:name="com.UCMobile.intl" />
|
|
||||||
<package android:name="org.torproject.torbrowser" />
|
|
||||||
</queries>
|
</queries>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|
|
@ -27,7 +27,6 @@ import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.Signature;
|
import android.content.pm.Signature;
|
||||||
import android.content.res.AssetFileDescriptor;
|
import android.content.res.AssetFileDescriptor;
|
||||||
import android.content.res.AssetManager;
|
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
@ -36,7 +35,6 @@ import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.ColorMatrix;
|
import android.graphics.ColorMatrix;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
import android.graphics.Paint;
|
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
|
@ -44,10 +42,6 @@ import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.fonts.Font;
|
|
||||||
import android.graphics.fonts.FontFamily;
|
|
||||||
import android.graphics.fonts.FontStyle;
|
|
||||||
import android.graphics.fonts.SystemFonts;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -79,7 +73,6 @@ import android.text.style.DynamicDrawableSpan;
|
||||||
import android.text.style.URLSpan;
|
import android.text.style.URLSpan;
|
||||||
import android.text.util.Linkify;
|
import android.text.util.Linkify;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.util.StateSet;
|
import android.util.StateSet;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
@ -101,7 +94,6 @@ import android.view.WindowManager;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.view.accessibility.AccessibilityManager;
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.view.animation.AccelerateInterpolator;
|
import android.view.animation.AccelerateInterpolator;
|
||||||
import android.view.animation.Animation;
|
|
||||||
import android.view.animation.DecelerateInterpolator;
|
import android.view.animation.DecelerateInterpolator;
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
import android.view.animation.OvershootInterpolator;
|
import android.view.animation.OvershootInterpolator;
|
||||||
|
@ -122,9 +114,7 @@ import androidx.annotation.RequiresApi;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.content.FileProvider;
|
import androidx.core.content.FileProvider;
|
||||||
import androidx.core.graphics.ColorUtils;
|
import androidx.core.graphics.ColorUtils;
|
||||||
import androidx.core.graphics.TypefaceCompatUtil;
|
|
||||||
import androidx.core.math.MathUtils;
|
import androidx.core.math.MathUtils;
|
||||||
import androidx.core.provider.FontRequest;
|
|
||||||
import androidx.core.widget.NestedScrollView;
|
import androidx.core.widget.NestedScrollView;
|
||||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||||
import androidx.dynamicanimation.animation.SpringAnimation;
|
import androidx.dynamicanimation.animation.SpringAnimation;
|
||||||
|
@ -3875,7 +3865,7 @@ public class AndroidUtilities {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean openForView(File f, String fileName, String mimeType, final Activity activity, Theme.ResourcesProvider resourcesProvider) {
|
public static boolean openForView(File f, String fileName, String mimeType, final Activity activity, Theme.ResourcesProvider resourcesProvider, boolean restrict) {
|
||||||
if (f != null && f.exists()) {
|
if (f != null && f.exists()) {
|
||||||
String realMimeType = null;
|
String realMimeType = null;
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
|
@ -3884,6 +3874,10 @@ public class AndroidUtilities {
|
||||||
int idx = fileName.lastIndexOf('.');
|
int idx = fileName.lastIndexOf('.');
|
||||||
if (idx != -1) {
|
if (idx != -1) {
|
||||||
String ext = fileName.substring(idx + 1);
|
String ext = fileName.substring(idx + 1);
|
||||||
|
int h = ext.toLowerCase().hashCode();
|
||||||
|
if (restrict && (h == 0x17a1c || h == 0x3107ab || h == 0x19a1b || h == 0xe55 || h == 0x18417)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
realMimeType = myMime.getMimeTypeFromExtension(ext.toLowerCase());
|
realMimeType = myMime.getMimeTypeFromExtension(ext.toLowerCase());
|
||||||
if (realMimeType == null) {
|
if (realMimeType == null) {
|
||||||
realMimeType = mimeType;
|
realMimeType = mimeType;
|
||||||
|
@ -3892,9 +3886,12 @@ public class AndroidUtilities {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && realMimeType != null && realMimeType.equals("application/vnd.android.package-archive") && !ApplicationLoader.applicationContext.getPackageManager().canRequestPackageInstalls()) {
|
if (realMimeType != null && realMimeType.equals("application/vnd.android.package-archive")) {
|
||||||
AlertsCreator.createApkRestrictedDialog(activity, resourcesProvider).show();
|
if (restrict) return true;
|
||||||
return true;
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !ApplicationLoader.applicationContext.getPackageManager().canRequestPackageInstalls()) {
|
||||||
|
AlertsCreator.createApkRestrictedDialog(activity, resourcesProvider).show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
intent.setDataAndType(FileProvider.getUriForFile(activity, ApplicationLoader.getApplicationId() + ".provider", f), realMimeType != null ? realMimeType : "text/plain");
|
intent.setDataAndType(FileProvider.getUriForFile(activity, ApplicationLoader.getApplicationId() + ".provider", f), realMimeType != null ? realMimeType : "text/plain");
|
||||||
|
@ -3920,7 +3917,7 @@ public class AndroidUtilities {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean openForView(MessageObject message, Activity activity, Theme.ResourcesProvider resourcesProvider) {
|
public static boolean openForView(MessageObject message, Activity activity, Theme.ResourcesProvider resourcesProvider, boolean restrict) {
|
||||||
File f = null;
|
File f = null;
|
||||||
if (message.messageOwner.attachPath != null && message.messageOwner.attachPath.length() != 0) {
|
if (message.messageOwner.attachPath != null && message.messageOwner.attachPath.length() != 0) {
|
||||||
f = new File(message.messageOwner.attachPath);
|
f = new File(message.messageOwner.attachPath);
|
||||||
|
@ -3929,13 +3926,13 @@ public class AndroidUtilities {
|
||||||
f = FileLoader.getInstance(message.currentAccount).getPathToMessage(message.messageOwner);
|
f = FileLoader.getInstance(message.currentAccount).getPathToMessage(message.messageOwner);
|
||||||
}
|
}
|
||||||
String mimeType = message.type == MessageObject.TYPE_FILE || message.type == MessageObject.TYPE_TEXT ? message.getMimeType() : null;
|
String mimeType = message.type == MessageObject.TYPE_FILE || message.type == MessageObject.TYPE_TEXT ? message.getMimeType() : null;
|
||||||
return openForView(f, message.getFileName(), mimeType, activity, resourcesProvider);
|
return openForView(f, message.getFileName(), mimeType, activity, resourcesProvider, restrict);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean openForView(TLRPC.Document document, boolean forceCache, Activity activity) {
|
public static boolean openForView(TLRPC.Document document, boolean forceCache, Activity activity) {
|
||||||
String fileName = FileLoader.getAttachFileName(document);
|
String fileName = FileLoader.getAttachFileName(document);
|
||||||
File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true);
|
File f = FileLoader.getInstance(UserConfig.selectedAccount).getPathToAttach(document, true);
|
||||||
return openForView(f, fileName, document.mime_type, activity, null);
|
return openForView(f, fileName, document.mime_type, activity, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpannableStringBuilder formatSpannableSimple(CharSequence format, CharSequence... cs) {
|
public static SpannableStringBuilder formatSpannableSimple(CharSequence format, CharSequence... cs) {
|
||||||
|
|
|
@ -1461,8 +1461,10 @@ public class LocaleController {
|
||||||
value = BuildVars.USE_CLOUD_STRINGS ? getInstance().localeValues.get(key + "_other") : null;
|
value = BuildVars.USE_CLOUD_STRINGS ? getInstance().localeValues.get(key + "_other") : null;
|
||||||
}
|
}
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(param, "string", ApplicationLoader.applicationContext.getPackageName());
|
try {
|
||||||
value = ApplicationLoader.applicationContext.getString(resourceId);
|
int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(param, "string", ApplicationLoader.applicationContext.getPackageName());
|
||||||
|
value = ApplicationLoader.applicationContext.getString(resourceId);
|
||||||
|
} catch (Exception e2) {}
|
||||||
}
|
}
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(key + "_other", "string", ApplicationLoader.applicationContext.getPackageName());
|
int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(key + "_other", "string", ApplicationLoader.applicationContext.getPackageName());
|
||||||
|
|
|
@ -8410,6 +8410,7 @@ public class MessageObject {
|
||||||
}
|
}
|
||||||
boolean isAnimated = false;
|
boolean isAnimated = false;
|
||||||
boolean isVideo = false;
|
boolean isVideo = false;
|
||||||
|
String filename = null;
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int height = 0;
|
int height = 0;
|
||||||
for (int a = 0; a < document.attributes.size(); a++) {
|
for (int a = 0; a < document.attributes.size(); a++) {
|
||||||
|
@ -8423,6 +8424,20 @@ public class MessageObject {
|
||||||
height = attribute.h;
|
height = attribute.h;
|
||||||
} else if (attribute instanceof TLRPC.TL_documentAttributeAnimated) {
|
} else if (attribute instanceof TLRPC.TL_documentAttributeAnimated) {
|
||||||
isAnimated = true;
|
isAnimated = true;
|
||||||
|
} else if (attribute instanceof TLRPC.TL_documentAttributeFilename) {
|
||||||
|
filename = attribute.file_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (filename != null) {
|
||||||
|
int index = filename.lastIndexOf(".");
|
||||||
|
if (index >= 0) {
|
||||||
|
String ext = filename.substring(index + 1);
|
||||||
|
switch (ext.toLowerCase().hashCode()) {
|
||||||
|
case 0x17a1c: case 0x3107ab: case 0x19a1b:
|
||||||
|
case 0xe55: case 0x18417: case 0x184fe:
|
||||||
|
case 0x18181:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isAnimated && (width > 1280 || height > 1280)) {
|
if (isAnimated && (width > 1280 || height > 1280)) {
|
||||||
|
|
|
@ -19922,13 +19922,13 @@ public class MessagesController extends BaseController implements NotificationCe
|
||||||
@Override
|
@Override
|
||||||
public void onMessagesLoaded(boolean fromCache) {
|
public void onMessagesLoaded(boolean fromCache) {
|
||||||
progress.end();
|
progress.end();
|
||||||
fragment.presentFragment(new ChatActivity(bundle), true);
|
fragment.presentFragment(new ChatActivity(bundle));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError() {
|
public void onError() {
|
||||||
progress.end();
|
progress.end();
|
||||||
fragment.presentFragment(new ChatActivity(bundle), true);
|
fragment.presentFragment(new ChatActivity(bundle));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -49,6 +49,7 @@ import org.telegram.ui.LaunchActivity;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
|
@ -253,11 +254,9 @@ public class Browser {
|
||||||
boolean[] forceBrowser = new boolean[]{false};
|
boolean[] forceBrowser = new boolean[]{false};
|
||||||
boolean internalUri = isInternalUri(uri, forceBrowser);
|
boolean internalUri = isInternalUri(uri, forceBrowser);
|
||||||
String browserPackage = getBrowserPackageName(browser);
|
String browserPackage = getBrowserPackageName(browser);
|
||||||
if (isBrowserPackageInstalled(context, browserPackage, uri)) {
|
if (browserPackage != null) {
|
||||||
tryTelegraph = false;
|
tryTelegraph = false;
|
||||||
_allowCustom = false;
|
_allowCustom = false;
|
||||||
} else {
|
|
||||||
browserPackage = null;
|
|
||||||
}
|
}
|
||||||
final boolean allowCustom = _allowCustom;
|
final boolean allowCustom = _allowCustom;
|
||||||
if (tryTelegraph) {
|
if (tryTelegraph) {
|
||||||
|
@ -431,7 +430,16 @@ public class Browser {
|
||||||
intent.putExtra(LaunchActivity.EXTRA_FORCE_NOT_INTERNAL_APPS, forceNotInternalForApps);
|
intent.putExtra(LaunchActivity.EXTRA_FORCE_NOT_INTERNAL_APPS, forceNotInternalForApps);
|
||||||
((LaunchActivity) context).onNewIntent(intent, inCaseLoading);
|
((LaunchActivity) context).onNewIntent(intent, inCaseLoading);
|
||||||
} else {
|
} else {
|
||||||
context.startActivity(intent);
|
try {
|
||||||
|
context.startActivity(intent);
|
||||||
|
} catch (Exception e2) {
|
||||||
|
if (browserPackage != null) {
|
||||||
|
intent.setPackage(browserPackage = null);
|
||||||
|
context.startActivity(intent);
|
||||||
|
} else {
|
||||||
|
FileLog.e(e2);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e(e);
|
FileLog.e(e);
|
||||||
|
@ -588,14 +596,6 @@ public class Browser {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isBrowserPackageInstalled(Context context, String packageName, Uri uri) {
|
|
||||||
if (packageName == null) return false;
|
|
||||||
PackageManager packageManager = context.getPackageManager();
|
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
|
||||||
intent.setPackage(packageName);
|
|
||||||
return packageManager.resolveActivity(intent, 0) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String replaceHostname(Uri originalUri, String newHostname) {
|
public static String replaceHostname(Uri originalUri, String newHostname) {
|
||||||
String scheme = originalUri.getScheme();
|
String scheme = originalUri.getScheme();
|
||||||
String userInfo = originalUri.getUserInfo();
|
String userInfo = originalUri.getUserInfo();
|
||||||
|
|
|
@ -332,7 +332,7 @@ public class CachedMediaLayout extends FrameLayout implements NestedSizeNotifier
|
||||||
photoEntries.add(new MediaController.PhotoEntry(0, 0, 0, fileInfo.file.getPath(), 0, fileInfo.type == TYPE_VIDEOS, 0, 0, 0));
|
photoEntries.add(new MediaController.PhotoEntry(0, 0, 0, fileInfo.file.getPath(), 0, fileInfo.type == TYPE_VIDEOS, 0, 0, 0));
|
||||||
PhotoViewer.getInstance().openPhotoForSelect(photoEntries, 0, PhotoViewer.SELECT_TYPE_NO_SELECT, false, placeProvider, null);
|
PhotoViewer.getInstance().openPhotoForSelect(photoEntries, 0, PhotoViewer.SELECT_TYPE_NO_SELECT, false, placeProvider, null);
|
||||||
} else {
|
} else {
|
||||||
AndroidUtilities.openForView(fileInfo.file, fileInfo.file.getName(), null, parentFragment.getParentActivity(), null);
|
AndroidUtilities.openForView(fileInfo.file, fileInfo.file.getName(), null, parentFragment.getParentActivity(), null, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cacheCell.type == TYPE_MUSIC) {
|
if (cacheCell.type == TYPE_MUSIC) {
|
||||||
|
|
|
@ -19466,7 +19466,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
buttonX -= AndroidUtilities.dp(10);
|
buttonX -= AndroidUtilities.dp(10);
|
||||||
}
|
}
|
||||||
commentButtonRect.set(
|
commentButtonRect.set(
|
||||||
buttonX - AndroidUtilities.dp((currentMessageObject == null || !currentMessageObject.isOut()) && !drawPinnedBottom && currentPosition == null && (currentMessageObject == null || currentMessageObject.type != MessageObject.TYPE_POLL || pollInstantViewTouchesBottom) ? 6 : 0),
|
buttonX - AndroidUtilities.dp((currentMessageObject == null || !currentMessageObject.isOutOwner()) && !drawPinnedBottom && currentPosition == null && (currentMessageObject == null || currentMessageObject.type != MessageObject.TYPE_POLL || pollInstantViewTouchesBottom) ? 6 : 0),
|
||||||
(int) buttonY,
|
(int) buttonY,
|
||||||
endX - AndroidUtilities.dp(14),
|
endX - AndroidUtilities.dp(14),
|
||||||
layoutHeight - AndroidUtilities.dp(h) + 1
|
layoutHeight - AndroidUtilities.dp(h) + 1
|
||||||
|
|
|
@ -3164,7 +3164,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
AndroidUtilities.openForView(message, getParentActivity(), null);
|
AndroidUtilities.openForView(message, getParentActivity(), null, false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
alertUserOpenError(message);
|
alertUserOpenError(message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -293,6 +293,7 @@ public class ChannelMonetizationLayout extends SizeNotifierFrameLayout implement
|
||||||
return super.dispatchTouchEvent(event);
|
return super.dispatchTouchEvent(event);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
starsBalanceEditTextContainer.setVisibility(GONE);
|
||||||
starsBalanceEditTextContainer.setText(getString(R.string.BotStarsWithdrawPlaceholder));
|
starsBalanceEditTextContainer.setText(getString(R.string.BotStarsWithdrawPlaceholder));
|
||||||
starsBalanceEditTextContainer.setLeftPadding(dp(14 + 22));
|
starsBalanceEditTextContainer.setLeftPadding(dp(14 + 22));
|
||||||
starsBalanceEditText = new EditTextBoldCursor(context) {
|
starsBalanceEditText = new EditTextBoldCursor(context) {
|
||||||
|
@ -671,13 +672,14 @@ public class ChannelMonetizationLayout extends SizeNotifierFrameLayout implement
|
||||||
starsBalance = crypto_amount;
|
starsBalance = crypto_amount;
|
||||||
starsBalanceTitle.setText(ssb);
|
starsBalanceTitle.setText(ssb);
|
||||||
starsBalanceSubtitle.setText("≈" + BillingController.getInstance().formatCurrency(amount, "USD"));
|
starsBalanceSubtitle.setText("≈" + BillingController.getInstance().formatCurrency(amount, "USD"));
|
||||||
|
starsBalanceEditTextContainer.setVisibility(crypto_amount > 0 ? VISIBLE : GONE);
|
||||||
if (starsBalanceEditTextAll) {
|
if (starsBalanceEditTextAll) {
|
||||||
starsBalanceEditTextIgnore = true;
|
starsBalanceEditTextIgnore = true;
|
||||||
starsBalanceEditText.setText(Long.toString(starsBalanceEditTextValue = crypto_amount));
|
starsBalanceEditText.setText(Long.toString(starsBalanceEditTextValue = crypto_amount));
|
||||||
starsBalanceEditText.setSelection(starsBalanceEditText.getText().length());
|
starsBalanceEditText.setSelection(starsBalanceEditText.getText().length());
|
||||||
starsBalanceEditTextIgnore = false;
|
starsBalanceEditTextIgnore = false;
|
||||||
|
|
||||||
balanceButton.setEnabled(starsBalanceEditTextValue > 0);
|
starsBalanceButton.setEnabled(starsBalanceEditTextValue > 0);
|
||||||
}
|
}
|
||||||
starsBalanceBlockedUntil = blockedUntil;
|
starsBalanceBlockedUntil = blockedUntil;
|
||||||
|
|
||||||
|
|
|
@ -1174,8 +1174,10 @@ public abstract class BaseChartView<T extends ChartData, L extends LineViewData>
|
||||||
return minValue;
|
return minValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setData(T chartData) {
|
public boolean setData(T chartData) {
|
||||||
|
boolean updated = false;
|
||||||
if (this.chartData != chartData) {
|
if (this.chartData != chartData) {
|
||||||
|
updated = true;
|
||||||
invalidate();
|
invalidate();
|
||||||
lines.clear();
|
lines.clear();
|
||||||
if (chartData != null && chartData.lines != null) {
|
if (chartData != null && chartData.lines != null) {
|
||||||
|
@ -1235,6 +1237,7 @@ public abstract class BaseChartView<T extends ChartData, L extends LineViewData>
|
||||||
alphaAnimator.cancel();
|
alphaAnimator.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return updated;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected float getMinDistance() {
|
protected float getMinDistance() {
|
||||||
|
|
|
@ -233,6 +233,12 @@ public class ChartPickerDelegate {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void set(float start, float end) {
|
||||||
|
pickerStart = start;
|
||||||
|
pickerEnd = end;
|
||||||
|
view.onPickerDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean uncapture(MotionEvent event, int pointerIndex) {
|
public boolean uncapture(MotionEvent event, int pointerIndex) {
|
||||||
if (pointerIndex == 0) {
|
if (pointerIndex == 0) {
|
||||||
if (tryMoveTo) {
|
if (tryMoveTo) {
|
||||||
|
|
|
@ -312,13 +312,14 @@ public class PieChartView extends StackLinearChartView<PieChartViewData> {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setData(StackLinearChartData chartData) {
|
public boolean setData(StackLinearChartData chartData) {
|
||||||
super.setData(chartData);
|
boolean u = super.setData(chartData);
|
||||||
if (chartData != null) {
|
if (chartData != null) {
|
||||||
values = new float[chartData.lines.size()];
|
values = new float[chartData.lines.size()];
|
||||||
darawingValuesPercentage = new float[chartData.lines.size()];
|
darawingValuesPercentage = new float[chartData.lines.size()];
|
||||||
onPickerDataChanged(false, true, false);
|
onPickerDataChanged(false, true, false);
|
||||||
}
|
}
|
||||||
|
return u;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -800,6 +800,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
private boolean premiumInvoiceBot;
|
private boolean premiumInvoiceBot;
|
||||||
private boolean showScrollToMessageError;
|
private boolean showScrollToMessageError;
|
||||||
private int startLoadFromMessageId;
|
private int startLoadFromMessageId;
|
||||||
|
private int startReplyTo;
|
||||||
private int startLoadFromDate;
|
private int startLoadFromDate;
|
||||||
private int startLoadFromMessageIdSaved;
|
private int startLoadFromMessageIdSaved;
|
||||||
private int startLoadFromMessageOffset = Integer.MAX_VALUE;
|
private int startLoadFromMessageOffset = Integer.MAX_VALUE;
|
||||||
|
@ -2327,6 +2328,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
textToSet = arguments.getString("start_text");
|
textToSet = arguments.getString("start_text");
|
||||||
premiumInvoiceBot = arguments.getBoolean("premium_bot", false);
|
premiumInvoiceBot = arguments.getBoolean("premium_bot", false);
|
||||||
startLoadFromMessageId = arguments.getInt("message_id", 0);
|
startLoadFromMessageId = arguments.getInt("message_id", 0);
|
||||||
|
startReplyTo = arguments.getInt("reply_to", 0);
|
||||||
startLoadFromDate = arguments.getInt("start_from_date", 0);
|
startLoadFromDate = arguments.getInt("start_from_date", 0);
|
||||||
startFromVideoTimestamp = arguments.getInt("video_timestamp", -1);
|
startFromVideoTimestamp = arguments.getInt("video_timestamp", -1);
|
||||||
threadUnreadMessagesCount = arguments.getInt("unread_count", 0);
|
threadUnreadMessagesCount = arguments.getInt("unread_count", 0);
|
||||||
|
@ -19873,6 +19875,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
if (chatMode == MODE_SEARCH) {
|
if (chatMode == MODE_SEARCH) {
|
||||||
updateSearchUpDownButtonVisibility(true);
|
updateSearchUpDownButtonVisibility(true);
|
||||||
}
|
}
|
||||||
|
if (startReplyTo != 0) {
|
||||||
|
MessageObject msg = messagesDict[0].get(startReplyTo);
|
||||||
|
if (msg != null) {
|
||||||
|
showFieldPanelForReply(msg);
|
||||||
|
startReplyTo = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (id == NotificationCenter.invalidateMotionBackground) {
|
} else if (id == NotificationCenter.invalidateMotionBackground) {
|
||||||
if (chatListView != null) {
|
if (chatListView != null) {
|
||||||
chatListView.invalidateViews();
|
chatListView.invalidateViews();
|
||||||
|
@ -36552,7 +36561,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
}
|
}
|
||||||
if (!handled) {
|
if (!handled) {
|
||||||
try {
|
try {
|
||||||
AndroidUtilities.openForView(message, getParentActivity(), themeDelegate);
|
AndroidUtilities.openForView(message, getParentActivity(), themeDelegate, false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e(e);
|
FileLog.e(e);
|
||||||
alertUserOpenError(message);
|
alertUserOpenError(message);
|
||||||
|
@ -39245,7 +39254,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
|
|
||||||
dialog.setItemOptions(options);
|
dialog.setItemOptions(options);
|
||||||
if (span instanceof URLSpanReplacement) {
|
if (span instanceof URLSpanReplacement) {
|
||||||
SpannableString s = new SpannableString(((URLSpanReplacement) span).getURL());
|
String formattedUrl = ((URLSpanReplacement) span).getURL();
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
Uri uri = Uri.parse(formattedUrl);
|
||||||
|
formattedUrl = Browser.replaceHostname(uri, IDN.toUnicode(uri.getHost(), IDN.ALLOW_UNASSIGNED));
|
||||||
|
} catch (Exception e) {
|
||||||
|
FileLog.e(e, false);
|
||||||
|
}
|
||||||
|
formattedUrl = URLDecoder.decode(formattedUrl.replaceAll("\\+", "%2b"), "UTF-8");
|
||||||
|
} catch (Exception e) {
|
||||||
|
FileLog.e(e);
|
||||||
|
}
|
||||||
|
if (formattedUrl.length() > 204) {
|
||||||
|
formattedUrl = formattedUrl.substring(0, 204) + "…";
|
||||||
|
}
|
||||||
|
SpannableString s = new SpannableString(formattedUrl);
|
||||||
s.setSpan(span, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
s.setSpan(span, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
dialog.setScrim(cell, span, s);
|
dialog.setScrim(cell, span, s);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -388,8 +388,10 @@ public class ThanosEffect extends TextureView {
|
||||||
|
|
||||||
public void kill() {
|
public void kill() {
|
||||||
if (!alive) {
|
if (!alive) {
|
||||||
|
FileLog.d("ThanosEffect: kill failed, already dead");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
FileLog.d("ThanosEffect: kill");
|
||||||
try {
|
try {
|
||||||
Handler handler = getHandler();
|
Handler handler = getHandler();
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
|
@ -400,8 +402,10 @@ public class ThanosEffect extends TextureView {
|
||||||
|
|
||||||
private void killInternal() {
|
private void killInternal() {
|
||||||
if (!alive) {
|
if (!alive) {
|
||||||
|
FileLog.d("ThanosEffect: killInternal failed, already dead");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
FileLog.d("ThanosEffect: killInternal");
|
||||||
alive = false;
|
alive = false;
|
||||||
for (int i = 0; i < pendingAnimations.size(); ++i) {
|
for (int i = 0; i < pendingAnimations.size(); ++i) {
|
||||||
Animation animation = pendingAnimations.get(i);
|
Animation animation = pendingAnimations.get(i);
|
||||||
|
@ -454,11 +458,13 @@ public class ThanosEffect extends TextureView {
|
||||||
|
|
||||||
eglDisplay = egl.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
|
eglDisplay = egl.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
|
||||||
if (eglDisplay == egl.EGL_NO_DISPLAY) {
|
if (eglDisplay == egl.EGL_NO_DISPLAY) {
|
||||||
|
FileLog.e("ThanosEffect: eglDisplay == egl.EGL_NO_DISPLAY");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int[] version = new int[2];
|
int[] version = new int[2];
|
||||||
if (!egl.eglInitialize(eglDisplay, version)) {
|
if (!egl.eglInitialize(eglDisplay, version)) {
|
||||||
|
FileLog.e("ThanosEffect: failed eglInitialize");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -474,6 +480,7 @@ public class ThanosEffect extends TextureView {
|
||||||
EGLConfig[] eglConfigs = new EGLConfig[1];
|
EGLConfig[] eglConfigs = new EGLConfig[1];
|
||||||
int[] numConfigs = new int[1];
|
int[] numConfigs = new int[1];
|
||||||
if (!egl.eglChooseConfig(eglDisplay, configAttributes, eglConfigs, 1, numConfigs)) {
|
if (!egl.eglChooseConfig(eglDisplay, configAttributes, eglConfigs, 1, numConfigs)) {
|
||||||
|
FileLog.e("ThanosEffect: failed eglChooseConfig");
|
||||||
kill();
|
kill();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -485,17 +492,20 @@ public class ThanosEffect extends TextureView {
|
||||||
};
|
};
|
||||||
eglContext = egl.eglCreateContext(eglDisplay, eglConfig, egl.EGL_NO_CONTEXT, contextAttributes);
|
eglContext = egl.eglCreateContext(eglDisplay, eglConfig, egl.EGL_NO_CONTEXT, contextAttributes);
|
||||||
if (eglContext == null) {
|
if (eglContext == null) {
|
||||||
|
FileLog.e("ThanosEffect: eglContext == null");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, surfaceTexture, null);
|
eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, surfaceTexture, null);
|
||||||
if (eglSurface == null) {
|
if (eglSurface == null) {
|
||||||
|
FileLog.e("ThanosEffect: eglSurface == null");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)) {
|
if (!egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)) {
|
||||||
|
FileLog.e("ThanosEffect: failed eglMakeCurrent");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -503,6 +513,7 @@ public class ThanosEffect extends TextureView {
|
||||||
int vertexShader = GLES31.glCreateShader(GLES31.GL_VERTEX_SHADER);
|
int vertexShader = GLES31.glCreateShader(GLES31.GL_VERTEX_SHADER);
|
||||||
int fragmentShader = GLES31.glCreateShader(GLES31.GL_FRAGMENT_SHADER);
|
int fragmentShader = GLES31.glCreateShader(GLES31.GL_FRAGMENT_SHADER);
|
||||||
if (vertexShader == 0 || fragmentShader == 0) {
|
if (vertexShader == 0 || fragmentShader == 0) {
|
||||||
|
FileLog.e("ThanosEffect: vertexShader == 0 || fragmentShader == 0");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -527,6 +538,7 @@ public class ThanosEffect extends TextureView {
|
||||||
}
|
}
|
||||||
drawProgram = GLES31.glCreateProgram();
|
drawProgram = GLES31.glCreateProgram();
|
||||||
if (drawProgram == 0) {
|
if (drawProgram == 0) {
|
||||||
|
FileLog.e("ThanosEffect: drawProgram == 0");
|
||||||
killInternal();
|
killInternal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1994,6 +1994,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
private final static int gallery_menu_paint = 20;
|
private final static int gallery_menu_paint = 20;
|
||||||
private final static int gallery_menu_translate = 21;
|
private final static int gallery_menu_translate = 21;
|
||||||
private final static int gallery_menu_hide_translation = 22;
|
private final static int gallery_menu_hide_translation = 22;
|
||||||
|
private final static int gallery_menu_reply = 23;
|
||||||
|
|
||||||
private static DecelerateInterpolator decelerateInterpolator;
|
private static DecelerateInterpolator decelerateInterpolator;
|
||||||
private static Paint progressPaint;
|
private static Paint progressPaint;
|
||||||
|
@ -4863,7 +4864,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
((LaunchActivity) parentActivity).presentFragment(mediaActivity, false, true);
|
((LaunchActivity) parentActivity).presentFragment(mediaActivity, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (id == gallery_menu_showinchat) {
|
} else if (id == gallery_menu_showinchat || id == gallery_menu_reply) {
|
||||||
if (currentMessageObject == null) {
|
if (currentMessageObject == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4885,6 +4886,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
args.putLong("chat_id", -dialogId);
|
args.putLong("chat_id", -dialogId);
|
||||||
}
|
}
|
||||||
args.putInt("message_id", currentMessageObject.getId());
|
args.putInt("message_id", currentMessageObject.getId());
|
||||||
|
if (id == gallery_menu_reply) {
|
||||||
|
args.putInt("reply_to", currentMessageObject.getId());
|
||||||
|
}
|
||||||
NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.closeChats);
|
NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.closeChats);
|
||||||
if (parentActivity instanceof LaunchActivity) {
|
if (parentActivity instanceof LaunchActivity) {
|
||||||
LaunchActivity launchActivity = (LaunchActivity) parentActivity;
|
LaunchActivity launchActivity = (LaunchActivity) parentActivity;
|
||||||
|
@ -5212,7 +5216,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
Browser.openUrl(parentActivity, MessageObject.getMedia(currentMessageObject.messageOwner).webpage.url);
|
Browser.openUrl(parentActivity, MessageObject.getMedia(currentMessageObject.messageOwner).webpage.url);
|
||||||
closePhoto(false, false);
|
closePhoto(false, false);
|
||||||
} else if (currentMessageObject != null) {
|
} else if (currentMessageObject != null) {
|
||||||
if (AndroidUtilities.openForView(currentMessageObject, parentActivity, resourcesProvider)) {
|
if (AndroidUtilities.openForView(currentMessageObject, parentActivity, resourcesProvider, currentMessageObject.isVideo() || currentMessageObject.isPhoto() || currentMessageObject.isSticker())) {
|
||||||
closePhoto(false, false);
|
closePhoto(false, false);
|
||||||
} else {
|
} else {
|
||||||
showDownloadAlert();
|
showDownloadAlert();
|
||||||
|
@ -5499,6 +5503,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
menuItem.addSubItem(gallery_menu_savegif, R.drawable.msg_gif, LocaleController.getString("SaveToGIFs", R.string.SaveToGIFs)).setColors(0xfffafafa, 0xfffafafa);
|
menuItem.addSubItem(gallery_menu_savegif, R.drawable.msg_gif, LocaleController.getString("SaveToGIFs", R.string.SaveToGIFs)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
menuItem.addSubItem(gallery_menu_showinchat, R.drawable.msg_message, LocaleController.getString("ShowInChat", R.string.ShowInChat)).setColors(0xfffafafa, 0xfffafafa);
|
menuItem.addSubItem(gallery_menu_showinchat, R.drawable.msg_message, LocaleController.getString("ShowInChat", R.string.ShowInChat)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
menuItem.addSubItem(gallery_menu_masks2, R.drawable.msg_sticker, LocaleController.getString("ShowStickers", R.string.ShowStickers)).setColors(0xfffafafa, 0xfffafafa);
|
menuItem.addSubItem(gallery_menu_masks2, R.drawable.msg_sticker, LocaleController.getString("ShowStickers", R.string.ShowStickers)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
|
menuItem.addSubItem(gallery_menu_reply, R.drawable.menu_reply, LocaleController.getString(R.string.Reply)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
menuItem.addSubItem(gallery_menu_share, R.drawable.msg_shareout, LocaleController.getString("ShareFile", R.string.ShareFile)).setColors(0xfffafafa, 0xfffafafa);
|
menuItem.addSubItem(gallery_menu_share, R.drawable.msg_shareout, LocaleController.getString("ShareFile", R.string.ShareFile)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
menuItem.addSubItem(gallery_menu_save, R.drawable.msg_gallery, LocaleController.getString("SaveToGallery", R.string.SaveToGallery)).setColors(0xfffafafa, 0xfffafafa);
|
menuItem.addSubItem(gallery_menu_save, R.drawable.msg_gallery, LocaleController.getString("SaveToGallery", R.string.SaveToGallery)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
//menuItem.addSubItem(gallery_menu_edit_avatar, R.drawable.photo_paint, LocaleController.getString("EditPhoto", R.string.EditPhoto)).setColors(0xfffafafa, 0xfffafafa);
|
//menuItem.addSubItem(gallery_menu_edit_avatar, R.drawable.photo_paint, LocaleController.getString("EditPhoto", R.string.EditPhoto)).setColors(0xfffafafa, 0xfffafafa);
|
||||||
|
@ -9294,7 +9299,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
builder.setMessage(LocaleController.getString("CantPlayVideo", R.string.CantPlayVideo));
|
builder.setMessage(LocaleController.getString("CantPlayVideo", R.string.CantPlayVideo));
|
||||||
builder.setPositiveButton(LocaleController.getString("Open", R.string.Open), (dialog, which) -> {
|
builder.setPositiveButton(LocaleController.getString("Open", R.string.Open), (dialog, which) -> {
|
||||||
try {
|
try {
|
||||||
AndroidUtilities.openForView(currentMessageObject, parentActivity, resourcesProvider);
|
AndroidUtilities.openForView(currentMessageObject, parentActivity, resourcesProvider, true);
|
||||||
closePhoto(false, false);
|
closePhoto(false, false);
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
FileLog.e(e1);
|
FileLog.e(e1);
|
||||||
|
@ -12463,6 +12468,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
dateOverride = 0;
|
dateOverride = 0;
|
||||||
menuItem.hideSubItem(gallery_menu_showall);
|
menuItem.hideSubItem(gallery_menu_showall);
|
||||||
menuItem.hideSubItem(gallery_menu_showinchat);
|
menuItem.hideSubItem(gallery_menu_showinchat);
|
||||||
|
menuItem.hideSubItem(gallery_menu_reply);
|
||||||
menuItem.hideSubItem(gallery_menu_share);
|
menuItem.hideSubItem(gallery_menu_share);
|
||||||
menuItem.hideSubItem(gallery_menu_openin);
|
menuItem.hideSubItem(gallery_menu_openin);
|
||||||
menuItem.hideSubItem(gallery_menu_savegif);
|
menuItem.hideSubItem(gallery_menu_savegif);
|
||||||
|
@ -12608,6 +12614,17 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
imagesByIds[0].put(messageObject.getId(), messageObject);
|
imagesByIds[0].put(messageObject.getId(), messageObject);
|
||||||
if (parentChatActivity == null || !parentChatActivity.isThreadChat() && parentChatActivity.getChatMode() != ChatActivity.MODE_SAVED && parentChatActivity.getChatMode() != ChatActivity.MODE_QUICK_REPLIES) {
|
if (parentChatActivity == null || !parentChatActivity.isThreadChat() && parentChatActivity.getChatMode() != ChatActivity.MODE_SAVED && parentChatActivity.getChatMode() != ChatActivity.MODE_QUICK_REPLIES) {
|
||||||
menuItem.showSubItem(gallery_menu_showinchat);
|
menuItem.showSubItem(gallery_menu_showinchat);
|
||||||
|
boolean canWrite = true;
|
||||||
|
long dialogId = messageObject.getDialogId();
|
||||||
|
if (dialogId < 0) {
|
||||||
|
TLRPC.Chat chat = MessagesController.getInstance(messageObject.currentAccount).getChat(-dialogId);
|
||||||
|
canWrite = ChatObject.canWriteToChat(chat);
|
||||||
|
}
|
||||||
|
if (canWrite) {
|
||||||
|
menuItem.showSubItem(gallery_menu_reply);
|
||||||
|
} else {
|
||||||
|
menuItem.hideSubItem(gallery_menu_reply);
|
||||||
|
}
|
||||||
menuItem.showSubItem(gallery_menu_showall);
|
menuItem.showSubItem(gallery_menu_showall);
|
||||||
}
|
}
|
||||||
setItemVisible(sendItem, !noforwards, false);
|
setItemVisible(sendItem, !noforwards, false);
|
||||||
|
@ -12678,6 +12695,17 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
startOffset = object.starOffset;
|
startOffset = object.starOffset;
|
||||||
}
|
}
|
||||||
menuItem.showSubItem(gallery_menu_showinchat);
|
menuItem.showSubItem(gallery_menu_showinchat);
|
||||||
|
boolean canWrite = true;
|
||||||
|
long dialogId = openingObject.getDialogId();
|
||||||
|
if (dialogId < 0) {
|
||||||
|
TLRPC.Chat chat = MessagesController.getInstance(openingObject.currentAccount).getChat(-dialogId);
|
||||||
|
canWrite = ChatObject.canWriteToChat(chat);
|
||||||
|
}
|
||||||
|
if (canWrite) {
|
||||||
|
menuItem.showSubItem(gallery_menu_reply);
|
||||||
|
} else {
|
||||||
|
menuItem.hideSubItem(gallery_menu_reply);
|
||||||
|
}
|
||||||
if (openingObject.canForwardMessage() && !noforwards) {
|
if (openingObject.canForwardMessage() && !noforwards) {
|
||||||
setItemVisible(sendItem, true, false);
|
setItemVisible(sendItem, true, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Space;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
@ -116,7 +117,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
private boolean balanceEditTextAll = true;
|
private boolean balanceEditTextAll = true;
|
||||||
private long balanceEditTextValue;
|
private long balanceEditTextValue;
|
||||||
private EditTextBoldCursor balanceEditText;
|
private EditTextBoldCursor balanceEditText;
|
||||||
private ButtonWithCounterView balanceButton;
|
private ButtonWithCounterView balanceButton, adsButton;
|
||||||
private ColoredImageSpan[] starRef = new ColoredImageSpan[1];
|
private ColoredImageSpan[] starRef = new ColoredImageSpan[1];
|
||||||
private int shakeDp = 4;
|
private int shakeDp = 4;
|
||||||
|
|
||||||
|
@ -241,7 +242,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
||||||
@Override
|
@Override
|
||||||
public void afterTextChanged(Editable s) {
|
public void afterTextChanged(Editable s) {
|
||||||
long balance = BotStarsController.getInstance(currentAccount).getBalance(bot_id);
|
long balance = BotStarsController.getInstance(currentAccount).getAvailableBalance(bot_id);
|
||||||
balanceEditTextValue = TextUtils.isEmpty(s) ? 0 : Long.parseLong(s.toString());
|
balanceEditTextValue = TextUtils.isEmpty(s) ? 0 : Long.parseLong(s.toString());
|
||||||
if (balanceEditTextValue > balance) {
|
if (balanceEditTextValue > balance) {
|
||||||
balanceEditTextValue = balance;
|
balanceEditTextValue = balance;
|
||||||
|
@ -274,37 +275,46 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
balanceLayout.addView(balanceEditTextContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 18, 14, 18, 2));
|
balanceLayout.addView(balanceEditTextContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 18, 14, 18, 2));
|
||||||
|
balanceEditTextContainer.setVisibility(View.GONE);
|
||||||
|
|
||||||
final CircularProgressDrawable circularProgressDrawable = new CircularProgressDrawable(dp(15), dpf2(2), Theme.getColor(Theme.key_featuredStickers_buttonText, getResourceProvider())) {
|
LinearLayout balanceButtonsLayout = new LinearLayout(context);
|
||||||
@Override
|
balanceButtonsLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
public int getIntrinsicWidth() {
|
|
||||||
return dp(24);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public int getIntrinsicHeight() {
|
|
||||||
return dp(24);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
circularProgressDrawable.setBounds(0, 0, dp(24), dp(24));
|
|
||||||
|
|
||||||
balanceButton = new ButtonWithCounterView(context, getResourceProvider()) {
|
balanceButton = new ButtonWithCounterView(context, getResourceProvider()) {
|
||||||
@Override
|
|
||||||
protected boolean verifyDrawable(@NonNull Drawable who) {
|
|
||||||
return who == circularProgressDrawable || super.verifyDrawable(who);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean subTextSplitToWords() {
|
protected boolean subTextSplitToWords() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
balanceButton.setEnabled(MessagesController.getInstance(currentAccount).channelRevenueWithdrawalEnabled);
|
balanceButton.setEnabled(MessagesController.getInstance(currentAccount).channelRevenueWithdrawalEnabled);
|
||||||
circularProgressDrawable.setCallback(balanceButton);
|
balanceButton.setText(getString(R.string.BotStarsButtonWithdrawShortAll), false);
|
||||||
balanceButton.setText(getString(R.string.BotStarsButtonWithdrawAll), false);
|
|
||||||
balanceButton.setOnClickListener(v -> {
|
balanceButton.setOnClickListener(v -> {
|
||||||
withdraw();
|
withdraw();
|
||||||
});
|
});
|
||||||
balanceLayout.addView(balanceButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.TOP | Gravity.FILL_HORIZONTAL, 18, 13, 18, 0));
|
|
||||||
|
adsButton = new ButtonWithCounterView(context, getResourceProvider());
|
||||||
|
adsButton.setEnabled(true);
|
||||||
|
adsButton.setText(getString(R.string.MonetizationStarsAds), false);
|
||||||
|
adsButton.setOnClickListener(v -> {
|
||||||
|
if (!v.isEnabled() || adsButton.isLoading()) return;
|
||||||
|
|
||||||
|
adsButton.setLoading(true);
|
||||||
|
TLRPC.TL_payments_getStarsRevenueAdsAccountUrl req = new TLRPC.TL_payments_getStarsRevenueAdsAccountUrl();
|
||||||
|
req.peer = MessagesController.getInstance(currentAccount).getInputPeer(bot_id);
|
||||||
|
ConnectionsManager.getInstance(currentAccount).sendRequest(req, (res, err) -> AndroidUtilities.runOnUIThread(() -> {
|
||||||
|
if (res instanceof TLRPC.TL_payments_starsRevenueAdsAccountUrl) {
|
||||||
|
Browser.openUrl(context, ((TLRPC.TL_payments_starsRevenueAdsAccountUrl) res).url);
|
||||||
|
}
|
||||||
|
AndroidUtilities.runOnUIThread(() -> {
|
||||||
|
adsButton.setLoading(false);
|
||||||
|
}, 1000);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
balanceButtonsLayout.addView(balanceButton, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, 1, Gravity.FILL));
|
||||||
|
balanceButtonsLayout.addView(new Space(context), LayoutHelper.createLinear(8, 48, 0, Gravity.FILL));
|
||||||
|
balanceButtonsLayout.addView(adsButton, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, 1, Gravity.FILL));
|
||||||
|
balanceLayout.addView(balanceButtonsLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.TOP | Gravity.FILL_HORIZONTAL, 18, 13, 18, 0));
|
||||||
|
|
||||||
|
|
||||||
listView = new UniversalRecyclerView(this, this::fillItems, this::onItemClick, this::onItemLongClick);
|
listView = new UniversalRecyclerView(this, this::fillItems, this::onItemClick, this::onItemLongClick);
|
||||||
|
@ -330,7 +340,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
Drawable starDrawable = getContext().getResources().getDrawable(R.drawable.star_small_inner).mutate();
|
Drawable starDrawable = getContext().getResources().getDrawable(R.drawable.star_small_inner).mutate();
|
||||||
BulletinFactory.of(this).createSimpleBulletin(starDrawable, AndroidUtilities.replaceSingleTag(LocaleController.formatPluralString("BotStarsWithdrawMinLimit", (int) getMessagesController().starsRevenueWithdrawalMin), () -> {
|
BulletinFactory.of(this).createSimpleBulletin(starDrawable, AndroidUtilities.replaceSingleTag(LocaleController.formatPluralString("BotStarsWithdrawMinLimit", (int) getMessagesController().starsRevenueWithdrawalMin), () -> {
|
||||||
Bulletin.hideVisible();
|
Bulletin.hideVisible();
|
||||||
long balance = BotStarsController.getInstance(currentAccount).getBalance(bot_id);
|
long balance = BotStarsController.getInstance(currentAccount).getAvailableBalance(bot_id);
|
||||||
if (balance < getMessagesController().starsRevenueWithdrawalMin) {
|
if (balance < getMessagesController().starsRevenueWithdrawalMin) {
|
||||||
balanceEditTextAll = true;
|
balanceEditTextAll = true;
|
||||||
balanceEditTextValue = balance;
|
balanceEditTextValue = balance;
|
||||||
|
@ -407,6 +417,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
}
|
}
|
||||||
balanceTitle.setText(ssb);
|
balanceTitle.setText(ssb);
|
||||||
balanceSubtitle.setText("≈" + BillingController.getInstance().formatCurrency(amount, "USD"));
|
balanceSubtitle.setText("≈" + BillingController.getInstance().formatCurrency(amount, "USD"));
|
||||||
|
balanceEditTextContainer.setVisibility(amount > 0 ? View.VISIBLE : View.GONE);
|
||||||
if (balanceEditTextAll) {
|
if (balanceEditTextAll) {
|
||||||
balanceEditTextIgnore = true;
|
balanceEditTextIgnore = true;
|
||||||
balanceEditText.setText(Long.toString(balanceEditTextValue = crypto_amount));
|
balanceEditText.setText(Long.toString(balanceEditTextValue = crypto_amount));
|
||||||
|
@ -426,7 +437,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
final int now = getConnectionsManager().getCurrentTime();
|
final int now = getConnectionsManager().getCurrentTime();
|
||||||
balanceButton.setEnabled(balanceEditTextValue > 0 || balanceBlockedUntil > now);
|
balanceButton.setEnabled(balanceEditTextValue > 0 || balanceBlockedUntil > now);
|
||||||
if (now < balanceBlockedUntil) {
|
if (now < balanceBlockedUntil) {
|
||||||
balanceButton.setText(getString(R.string.BotStarsButtonWithdrawUntil), true);
|
balanceButton.setText(getString(R.string.BotStarsButtonWithdrawShortUntil), true);
|
||||||
|
|
||||||
if (lock == null) {
|
if (lock == null) {
|
||||||
lock = new SpannableStringBuilder("l");
|
lock = new SpannableStringBuilder("l");
|
||||||
|
@ -446,7 +457,7 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
AndroidUtilities.runOnUIThread(this.setBalanceButtonText, 1000);
|
AndroidUtilities.runOnUIThread(this.setBalanceButtonText, 1000);
|
||||||
} else {
|
} else {
|
||||||
balanceButton.setSubText(null, true);
|
balanceButton.setSubText(null, true);
|
||||||
balanceButton.setText(StarsIntroActivity.replaceStars(balanceEditTextAll ? getString(R.string.BotStarsButtonWithdrawAll) : LocaleController.formatPluralStringComma("BotStarsButtonWithdraw", (int) balanceEditTextValue, ' '), starRef), true);
|
balanceButton.setText(StarsIntroActivity.replaceStars(balanceEditTextAll ? getString(R.string.BotStarsButtonWithdrawShortAll) : LocaleController.formatPluralStringComma("BotStarsButtonWithdrawShort", (int) balanceEditTextValue, ' '), starRef), true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -492,7 +503,8 @@ public class BotStarsActivity extends BaseFragment implements NotificationCenter
|
||||||
rate = stats.usd_rate;
|
rate = stats.usd_rate;
|
||||||
revenueChartData = StatisticActivity.createViewData(stats.revenue_graph, getString(R.string.BotStarsChartRevenue), 2);
|
revenueChartData = StatisticActivity.createViewData(stats.revenue_graph, getString(R.string.BotStarsChartRevenue), 2);
|
||||||
if (revenueChartData != null && revenueChartData.chartData != null && revenueChartData.chartData.lines != null && !revenueChartData.chartData.lines.isEmpty() && revenueChartData.chartData.lines.get(0) != null) {
|
if (revenueChartData != null && revenueChartData.chartData != null && revenueChartData.chartData.lines != null && !revenueChartData.chartData.lines.isEmpty() && revenueChartData.chartData.lines.get(0) != null) {
|
||||||
revenueChartData.chartData.lines.get(0).colorKey = Theme.key_statisticChartLine_golden;
|
revenueChartData.showAll = true;
|
||||||
|
revenueChartData.chartData.lines.get(0).colorKey = Theme.key_color_yellow;
|
||||||
revenueChartData.chartData.yRate = (float) (1.0 / rate / 100.0);
|
revenueChartData.chartData.yRate = (float) (1.0 / rate / 100.0);
|
||||||
}
|
}
|
||||||
setBalance(stats.status.available_balance, stats.status.next_withdrawal_at);
|
setBalance(stats.status.available_balance, stats.status.next_withdrawal_at);
|
||||||
|
|
|
@ -84,6 +84,11 @@ public class BotStarsController {
|
||||||
return botStats == null ? 0 : botStats.status.current_balance;
|
return botStats == null ? 0 : botStats.status.current_balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getAvailableBalance(long bot_id) {
|
||||||
|
TLRPC.TL_payments_starsRevenueStats botStats = getRevenueStats(bot_id);
|
||||||
|
return botStats == null ? 0 : botStats.status.available_balance;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isBalanceAvailable(long bot_id) {
|
public boolean isBalanceAvailable(long bot_id) {
|
||||||
return getRevenueStats(bot_id) != null;
|
return getRevenueStats(bot_id) != null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -676,7 +676,7 @@ public class StarsController {
|
||||||
b.createSimpleBulletin(starDrawable, getString(R.string.StarsPurchaseCompleted), AndroidUtilities.replaceTags(formatPluralString("StarsPurchaseCompletedInfo", (int) stars, product, bot))).show();
|
b.createSimpleBulletin(starDrawable, getString(R.string.StarsPurchaseCompleted), AndroidUtilities.replaceTags(formatPluralString("StarsPurchaseCompletedInfo", (int) stars, product, bot))).show();
|
||||||
}
|
}
|
||||||
if (LaunchActivity.instance != null && LaunchActivity.instance.getFireworksOverlay() != null) {
|
if (LaunchActivity.instance != null && LaunchActivity.instance.getFireworksOverlay() != null) {
|
||||||
LaunchActivity.instance.getFireworksOverlay().start();
|
LaunchActivity.instance.getFireworksOverlay().start(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidateTransactions(true);
|
invalidateTransactions(true);
|
||||||
|
|
|
@ -1636,7 +1636,7 @@ public class StatisticActivity extends BaseFragment implements NotificationCente
|
||||||
}
|
}
|
||||||
currentW += getChildAt(i).getMeasuredWidth();
|
currentW += getChildAt(i).getMeasuredWidth();
|
||||||
}
|
}
|
||||||
setMeasuredDimension(getMeasuredWidth(), firstH + currentH + dp(16));
|
setMeasuredDimension(getMeasuredWidth(), getChildCount() == 0 ? 0 : firstH + currentH + dp(16));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1999,7 +1999,11 @@ public class StatisticActivity extends BaseFragment implements NotificationCente
|
||||||
progressView.setVisibility(View.GONE);
|
progressView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
chartView.setData(viewData.chartData);
|
if (chartView.setData(viewData.chartData)) {
|
||||||
|
if (viewData.showAll) {
|
||||||
|
chartView.pickerDelegate.set(0f, 1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
chartHeaderView.setUseWeekInterval(viewData.useWeekFormat);
|
chartHeaderView.setUseWeekInterval(viewData.useWeekFormat);
|
||||||
chartView.legendSignatureView.setUseWeek(viewData.useWeekFormat);
|
chartView.legendSignatureView.setUseWeek(viewData.useWeekFormat);
|
||||||
|
|
||||||
|
@ -2191,6 +2195,7 @@ public class StatisticActivity extends BaseFragment implements NotificationCente
|
||||||
ChartData childChartData;
|
ChartData childChartData;
|
||||||
String token;
|
String token;
|
||||||
String zoomToken;
|
String zoomToken;
|
||||||
|
public boolean showAll;
|
||||||
|
|
||||||
final int graphType;
|
final int graphType;
|
||||||
final String title;
|
final String title;
|
||||||
|
|
|
@ -2185,21 +2185,27 @@ public class StoryViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
openCloseAnimator = ValueAnimator.ofFloat(0, 1f);
|
openCloseAnimator = ValueAnimator.ofFloat(0, 1f);
|
||||||
openCloseAnimator.addUpdateListener(animation -> {
|
openCloseAnimator.addUpdateListener(animation -> {
|
||||||
progressToOpen = (float) animation.getAnimatedValue();
|
progressToOpen = (float) animation.getAnimatedValue();
|
||||||
containerView.checkHwAcceleration(progressToOpen);
|
if (containerView != null) {
|
||||||
|
containerView.checkHwAcceleration(progressToOpen);
|
||||||
|
}
|
||||||
checkNavBarColor();
|
checkNavBarColor();
|
||||||
if (windowView != null) {
|
if (windowView != null) {
|
||||||
windowView.invalidate();
|
windowView.invalidate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
locker.lock();
|
locker.lock();
|
||||||
containerView.enableHwAcceleration();
|
if (containerView != null) {
|
||||||
|
containerView.enableHwAcceleration();
|
||||||
|
}
|
||||||
openCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
openCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
progressToOpen = 1f;
|
progressToOpen = 1f;
|
||||||
checkNavBarColor();
|
checkNavBarColor();
|
||||||
animationInProgress = false;
|
animationInProgress = false;
|
||||||
containerView.disableHwAcceleration();
|
if (containerView != null) {
|
||||||
|
containerView.disableHwAcceleration();
|
||||||
|
}
|
||||||
if (windowView != null) {
|
if (windowView != null) {
|
||||||
windowView.invalidate();
|
windowView.invalidate();
|
||||||
}
|
}
|
||||||
|
@ -2221,42 +2227,43 @@ public class StoryViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
showViewsAfterOpening = false;
|
showViewsAfterOpening = false;
|
||||||
openViews();
|
openViews();
|
||||||
} else if (!SharedConfig.storiesIntroShown) {
|
} else if (!SharedConfig.storiesIntroShown) {
|
||||||
if (storiesIntro == null) {
|
if (storiesIntro == null && containerView != null) {
|
||||||
storiesIntro = new StoriesIntro(containerView.getContext(), windowView);
|
storiesIntro = new StoriesIntro(containerView.getContext(), windowView);
|
||||||
storiesIntro.setAlpha(0f);
|
storiesIntro.setAlpha(0f);
|
||||||
containerView.addView(storiesIntro);
|
containerView.addView(storiesIntro);
|
||||||
}
|
}
|
||||||
|
if (storiesIntro != null) {
|
||||||
storiesIntro.setOnClickListener(v -> {
|
storiesIntro.setOnClickListener(v -> {
|
||||||
|
storiesIntro.animate()
|
||||||
|
.alpha(0f)
|
||||||
|
.setDuration(150L)
|
||||||
|
.setListener(new AnimatorListenerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
super.onAnimationEnd(animation);
|
||||||
|
if (storiesIntro != null) {
|
||||||
|
storiesIntro.stopAnimation();
|
||||||
|
containerView.removeView(storiesIntro);
|
||||||
|
}
|
||||||
|
storiesIntro = null;
|
||||||
|
updatePlayingMode();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.start();
|
||||||
|
});
|
||||||
storiesIntro.animate()
|
storiesIntro.animate()
|
||||||
.alpha(0f)
|
.alpha(1f)
|
||||||
.setDuration(150L)
|
.setDuration(150L)
|
||||||
.setListener(new AnimatorListenerAdapter() {
|
.setListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
super.onAnimationEnd(animation);
|
super.onAnimationEnd(animation);
|
||||||
if (storiesIntro != null) {
|
if (storiesIntro != null) {
|
||||||
storiesIntro.stopAnimation();
|
storiesIntro.startAnimation(true);
|
||||||
containerView.removeView(storiesIntro);
|
|
||||||
}
|
}
|
||||||
storiesIntro = null;
|
|
||||||
updatePlayingMode();
|
|
||||||
}
|
}
|
||||||
})
|
}).start();
|
||||||
.start();
|
}
|
||||||
});
|
|
||||||
storiesIntro.animate()
|
|
||||||
.alpha(1f)
|
|
||||||
.setDuration(150L)
|
|
||||||
.setListener(new AnimatorListenerAdapter() {
|
|
||||||
@Override
|
|
||||||
public void onAnimationEnd(Animator animation) {
|
|
||||||
super.onAnimationEnd(animation);
|
|
||||||
if (storiesIntro != null) {
|
|
||||||
storiesIntro.startAnimation(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
|
|
||||||
SharedConfig.setStoriesIntroShown(true);
|
SharedConfig.setStoriesIntroShown(true);
|
||||||
}
|
}
|
||||||
|
@ -2297,7 +2304,9 @@ public class StoryViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
}
|
}
|
||||||
transitionViewHolder.storyImage = null;
|
transitionViewHolder.storyImage = null;
|
||||||
transitionViewHolder.avatarImage = null;
|
transitionViewHolder.avatarImage = null;
|
||||||
containerView.disableHwAcceleration();
|
if (containerView != null) {
|
||||||
|
containerView.disableHwAcceleration();
|
||||||
|
}
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
if (currentPlayerScope != null) {
|
if (currentPlayerScope != null) {
|
||||||
currentPlayerScope.invalidate();
|
currentPlayerScope.invalidate();
|
||||||
|
@ -2349,17 +2358,21 @@ public class StoryViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
if (openCloseAnimator == null) {
|
if (openCloseAnimator == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
containerView.enableHwAcceleration();
|
if (containerView != null) {
|
||||||
|
containerView.enableHwAcceleration();
|
||||||
|
}
|
||||||
openCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
openCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
super.onAnimationEnd(animation);
|
super.onAnimationEnd(animation);
|
||||||
containerView.disableHwAcceleration();
|
if (containerView != null) {
|
||||||
|
containerView.disableHwAcceleration();
|
||||||
|
}
|
||||||
checkNavBarColor();
|
checkNavBarColor();
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
if (storiesIntro != null) {
|
if (storiesIntro != null) {
|
||||||
storiesIntro.stopAnimation();
|
storiesIntro.stopAnimation();
|
||||||
containerView.removeView(storiesIntro);
|
AndroidUtilities.removeFromParent(storiesIntro);
|
||||||
storiesIntro = null;
|
storiesIntro = null;
|
||||||
}
|
}
|
||||||
if (transitionViewHolder.avatarImage != null) {
|
if (transitionViewHolder.avatarImage != null) {
|
||||||
|
@ -2621,7 +2634,9 @@ public class StoryViewer implements NotificationCenter.NotificationCenterDelegat
|
||||||
if (peerStoriesView != null) {
|
if (peerStoriesView != null) {
|
||||||
peerStoriesView.invalidate();
|
peerStoriesView.invalidate();
|
||||||
}
|
}
|
||||||
containerView.invalidate();
|
if (containerView != null) {
|
||||||
|
containerView.invalidate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openViews() {
|
public void openViews() {
|
||||||
|
|
|
@ -138,7 +138,7 @@ public class BotBiometry {
|
||||||
|
|
||||||
public void updateToken(String reason, String token, Utilities.Callback<Boolean> whenDone) {
|
public void updateToken(String reason, String token, Utilities.Callback<Boolean> whenDone) {
|
||||||
prompt(reason, false, token, result -> {
|
prompt(reason, false, token, result -> {
|
||||||
boolean success = true;
|
boolean success = result != null;
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
try {
|
try {
|
||||||
BiometricPrompt.CryptoObject cryptoObject = result.getCryptoObject();
|
BiometricPrompt.CryptoObject cryptoObject = result.getCryptoObject();
|
||||||
|
|
|
@ -250,9 +250,6 @@ public class BotWebViewAttachedSheet implements NotificationCenter.NotificationC
|
||||||
if (backDrawable != null) {
|
if (backDrawable != null) {
|
||||||
backDrawable.setRotation(backButtonShown ? 0f : 1f, false);
|
backDrawable.setRotation(backButtonShown ? 0f : 1f, false);
|
||||||
}
|
}
|
||||||
if (settingsItem != null) {
|
|
||||||
settingsItem.setVisibility(tab.settings ? View.VISIBLE : View.GONE);
|
|
||||||
}
|
|
||||||
if (tab.main != null) {
|
if (tab.main != null) {
|
||||||
setMainButton(tab.main);
|
setMainButton(tab.main);
|
||||||
}
|
}
|
||||||
|
@ -288,6 +285,9 @@ public class BotWebViewAttachedSheet implements NotificationCenter.NotificationC
|
||||||
tab.props.responseTime = 0;
|
tab.props.responseTime = 0;
|
||||||
}
|
}
|
||||||
requestWebView(fragment, tab.props);
|
requestWebView(fragment, tab.props);
|
||||||
|
if (settingsItem != null) {
|
||||||
|
settingsItem.setVisibility(tab.settings ? View.VISIBLE : View.GONE);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -249,6 +249,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi
|
||||||
tab.backButton = backButtonShown;
|
tab.backButton = backButtonShown;
|
||||||
tab.main = mainButtonSettings;
|
tab.main = mainButtonSettings;
|
||||||
tab.confirmDismiss = needCloseConfirmation;
|
tab.confirmDismiss = needCloseConfirmation;
|
||||||
|
tab.settings = settingsItem != null && settingsItem.getVisibility() == View.VISIBLE;
|
||||||
BotWebViewContainer.MyWebView webView = webViewContainer == null ? null : webViewContainer.getWebView();
|
BotWebViewContainer.MyWebView webView = webViewContainer == null ? null : webViewContainer.getWebView();
|
||||||
if (webView != null) {
|
if (webView != null) {
|
||||||
webViewContainer.preserveWebView();
|
webViewContainer.preserveWebView();
|
||||||
|
@ -312,6 +313,9 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi
|
||||||
tab.props.responseTime = 0;
|
tab.props.responseTime = 0;
|
||||||
}
|
}
|
||||||
requestWebView(fragment, tab.props);
|
requestWebView(fragment, tab.props);
|
||||||
|
if (settingsItem != null) {
|
||||||
|
settingsItem.setVisibility(tab.settings ? View.VISIBLE : View.GONE);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9023,6 +9023,10 @@
|
||||||
<string name="BotStarsWithdrawInfoLink">https://telegram.org/privacy</string>
|
<string name="BotStarsWithdrawInfoLink">https://telegram.org/privacy</string>
|
||||||
<string name="BotStarsButtonWithdrawUntil">Withdraw via Fragment</string>
|
<string name="BotStarsButtonWithdrawUntil">Withdraw via Fragment</string>
|
||||||
<string name="BotStarsButtonWithdrawAll">Withdraw all via Fragment</string>
|
<string name="BotStarsButtonWithdrawAll">Withdraw all via Fragment</string>
|
||||||
|
<string name="BotStarsButtonWithdrawShortAll">Withdraw all</string>
|
||||||
|
<string name="BotStarsButtonWithdrawShort_one">Withdraw ⭐️%d</string>
|
||||||
|
<string name="BotStarsButtonWithdrawShort_other">Withdraw ⭐️%d</string>
|
||||||
|
<string name="BotStarsButtonWithdrawShortUntil">Withdraw</string>
|
||||||
<string name="BotStarsWithdrawPlaceholder">Enter amount to withdraw</string>
|
<string name="BotStarsWithdrawPlaceholder">Enter amount to withdraw</string>
|
||||||
<string name="BotStarsButtonWithdraw_one">Withdraw ⭐️%d via Fragment</string>
|
<string name="BotStarsButtonWithdraw_one">Withdraw ⭐️%d via Fragment</string>
|
||||||
<string name="BotStarsButtonWithdraw_other">Withdraw ⭐️%d via Fragment</string>
|
<string name="BotStarsButtonWithdraw_other">Withdraw ⭐️%d via Fragment</string>
|
||||||
|
|
|
@ -13,9 +13,10 @@
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
#Sat Mar 12 05:53:50 MSK 2016
|
#Sat Mar 12 05:53:50 MSK 2016
|
||||||
APP_VERSION_CODE=4927
|
APP_VERSION_CODE=4945
|
||||||
APP_VERSION_NAME=10.14.3
|
APP_VERSION_NAME=10.14.5
|
||||||
APP_PACKAGE=org.telegram.messenger
|
APP_PACKAGE=org.telegram.messenger
|
||||||
|
IS_PRIVATE=false
|
||||||
RELEASE_KEY_PASSWORD=android
|
RELEASE_KEY_PASSWORD=android
|
||||||
RELEASE_KEY_ALIAS=androidkey
|
RELEASE_KEY_ALIAS=androidkey
|
||||||
RELEASE_STORE_PASSWORD=android
|
RELEASE_STORE_PASSWORD=android
|
||||||
|
|
Loading…
Reference in a new issue