NekoX/TMessagesProj/src/main/java/org/telegram/ui/ShareActivity.java

107 lines
3.8 KiB
Java
Raw Normal View History

2016-10-11 13:57:01 +02:00
/*
2019-01-23 18:03:33 +01:00
* This is the source code of Telegram for Android v. 5.x.x.
2016-10-11 13:57:01 +02:00
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
2019-01-23 18:03:33 +01:00
* Copyright Nikolai Kudashov, 2013-2018.
2016-10-11 13:57:01 +02:00
*/
package org.telegram.ui;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ApplicationLoader;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.MessageObject;
import org.telegram.messenger.R;
2018-07-30 04:07:02 +02:00
import org.telegram.messenger.UserConfig;
2016-10-11 13:57:01 +02:00
import org.telegram.messenger.Utilities;
import org.telegram.tgnet.SerializedData;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.Components.ShareAlert;
public class ShareActivity extends Activity {
private Dialog visibleDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
ApplicationLoader.postInitApplication();
AndroidUtilities.checkDisplaySize(this, getResources().getConfiguration());
requestWindowFeature(Window.FEATURE_NO_TITLE);
setTheme(R.style.Theme_TMessages_Transparent);
super.onCreate(savedInstanceState);
setContentView(new View(this), new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
Intent intent = getIntent();
if (intent == null || !Intent.ACTION_VIEW.equals(intent.getAction()) || intent.getData() == null) {
finish();
return;
}
Uri data = intent.getData();
String scheme = data.getScheme();
String url = data.toString();
String hash = data.getQueryParameter("hash");
if (!"tgb".equals(scheme) || !url.toLowerCase().startsWith("tgb://share_game_score") || TextUtils.isEmpty(hash)) {
finish();
return;
}
SharedPreferences sharedPreferences = ApplicationLoader.applicationContext.getSharedPreferences("botshare", Activity.MODE_PRIVATE);
String message = sharedPreferences.getString(hash + "_m", null);
if (TextUtils.isEmpty(message)) {
finish();
return;
}
SerializedData serializedData = new SerializedData(Utilities.hexToBytes(message));
TLRPC.Message mess = TLRPC.Message.TLdeserialize(serializedData, serializedData.readInt32(false), false);
if (mess == null) {
finish();
return;
}
2021-09-20 00:10:42 +02:00
mess.readAttachPath(serializedData, 0);
serializedData.cleanup();
2016-10-11 13:57:01 +02:00
String link = sharedPreferences.getString(hash + "_link", null);
2020-08-14 18:58:22 +02:00
MessageObject messageObject = new MessageObject(UserConfig.selectedAccount, mess, false, true);
2016-10-11 13:57:01 +02:00
messageObject.messageOwner.with_my_score = true;
try {
2017-12-08 18:35:59 +01:00
visibleDialog = ShareAlert.createShareAlert(this, messageObject, null, false, link, false);
2016-10-11 13:57:01 +02:00
visibleDialog.setCanceledOnTouchOutside(true);
2019-01-23 18:03:33 +01:00
visibleDialog.setOnDismissListener(dialog -> {
if (!isFinishing()) {
finish();
2016-10-11 13:57:01 +02:00
}
2019-01-23 18:03:33 +01:00
visibleDialog = null;
2016-10-11 13:57:01 +02:00
});
visibleDialog.show();
} catch (Exception e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
2016-10-11 13:57:01 +02:00
finish();
}
}
@Override
public void onPause() {
super.onPause();
try {
if (visibleDialog != null && visibleDialog.isShowing()) {
visibleDialog.dismiss();
visibleDialog = null;
}
} catch (Exception e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
2016-10-11 13:57:01 +02:00
}
}
}