undo temporary test

This commit is contained in:
adbenitez 2025-06-19 17:17:53 +02:00
parent fa868077b0
commit 3086c72304
5 changed files with 41 additions and 47 deletions

View file

@ -951,7 +951,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
case AttachmentTypeSelector.ADD_DOCUMENT:
AttachmentManager.selectDocument(this, PICK_DOCUMENT); break;
case AttachmentTypeSelector.INVITE_VIDEO_CHAT:
new VideochatUtil().invite(this, chatId); break;
if (isMultiUser()) {
VideochatUtil.startMeeting(this, chatId);
} else {
VideochatUtil.startCall(this, chatId);
}
break;
case AttachmentTypeSelector.ADD_CONTACT_INFO:
startContactChooserActivity(); break;
case AttachmentTypeSelector.ADD_LOCATION:

View file

@ -741,7 +741,7 @@ public class ConversationFragment extends MessageSelectorFragment
}
}
else if (messageRecord.getType()==DcMsg.DC_MSG_VIDEOCHAT_INVITATION) {
new VideochatUtil().join(getActivity(), messageRecord.getId());
VideochatUtil.joinMeeting(getActivity(), messageRecord.getId());
}
else if(DozeReminder.isDozeReminderMsg(getContext(), messageRecord)) {
DozeReminder.dozeReminderTapped(getContext());

View file

@ -18,7 +18,6 @@ import android.view.MenuItem;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.MimeTypeMap;
import android.webkit.PermissionRequest;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceResponse;
@ -35,7 +34,6 @@ import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
@ -165,13 +163,6 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
setScreenMode(getResources().getConfiguration());
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onPermissionRequest(PermissionRequest request) {
Util.runOnMain(() -> {
request.grant(request.getResources());
});
}
@Override
@RequiresApi(21)
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
@ -215,7 +206,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
this.baseURL = "https://acc" + dcContext.getAccountId() + "-msg" + appMessageId + ".localhost";
final JSONObject info = this.dcAppMsg.getWebxdcInfo();
internetAccess = true; //JsonUtils.optBoolean(info, "internet_access");
internetAccess = JsonUtils.optBoolean(info, "internet_access");
selfAddr = info.optString("self_addr");
sendUpdateMaxSize = info.optInt("send_update_max_size");
sendUpdateInterval = info.optInt("send_update_interval");
@ -238,10 +229,6 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
String extraHref = b.getString(EXTRA_HREF, "");
if (TextUtils.isEmpty(extraHref)) {
extraHref = "index.html";
if (this.dcAppMsg.getFromId() == DcContact.DC_CONTACT_ID_SELF) {
extraHref += "#call";
}
}
String href = baseURL + "/" + extraHref;

View file

@ -17,10 +17,10 @@ public class VideochatActivity extends WebViewActivity {
private static final String TAG = VideochatActivity.class.getSimpleName();
public static final String EXTRA_CHAT_ID = "chat_id";
public static final String EXTRA_URL = "url";
public static final String EXTRA_HASH = "hash";
private DcContext dcContext;
private String url = "";
private String url = "file:///android_asset/call.html";
@Override
protected void onCreate(Bundle state, boolean ready) {
@ -28,12 +28,12 @@ public class VideochatActivity extends WebViewActivity {
this.dcContext = DcHelper.getContext(getApplicationContext());
Bundle b = getIntent().getExtras();
url = b.getString(EXTRA_URL, "");
String hash = b.getString(EXTRA_HASH, "");
int chatId = b.getInt(EXTRA_CHAT_ID, 0);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36");
webSettings.setMediaPlaybackRequiresUserGesture(false);
webView.setWebChromeClient(new WebChromeClient() {
@Override
@ -51,7 +51,7 @@ public class VideochatActivity extends WebViewActivity {
});
});
webView.loadUrl(url);
webView.loadUrl(url+hash);
}
@Override

View file

@ -20,7 +20,7 @@ import java.nio.charset.StandardCharsets;
public class VideochatUtil {
public void invite(Activity activity, int chatId) {
public static void startMeeting(Activity activity, int chatId) {
DcContext dcContext = DcHelper.getContext(activity);
DcChat dcChat = dcContext.getChat(chatId);
@ -29,18 +29,7 @@ public class VideochatUtil {
.setMessage(R.string.videochat_invite_user_hint)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.ok, (dialog, which) -> {
String instance = dcContext.getConfig(DcHelper.CONFIG_WEBRTC_INSTANCE);
boolean unset = instance == null || instance.isEmpty();
if (unset) {
dcContext.setConfig(DcHelper.CONFIG_WEBRTC_INSTANCE, DcHelper.DEFAULT_VIDEOCHAT_URL);
}
int msgId = dcContext.sendVideochatInvitation(dcChat.getId());
if (unset) {
dcContext.setConfig(DcHelper.CONFIG_WEBRTC_INSTANCE, null);
}
if (msgId != 0) {
join(activity, msgId);
}
@ -48,27 +37,40 @@ public class VideochatUtil {
.show();
}
public void join(Activity activity, int msgId) {
public static void joinMeeting(Activity activity, int msgId) {
DcContext dcContext = DcHelper.getContext(activity);
DcMsg dcMsg = dcContext.getMsg(msgId);
String videochatUrl = dcMsg.getVideochatUrl();
IntentUtils.showInBrowser(activity, videochatUrl);
}
public static void startCall(Activity activity, int chatId) {
DcContext dcContext = DcHelper.getContext(activity);
DcChat dcChat = dcContext.getChat(chatId);
new AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.videochat_invite_user_to_videochat, dcChat.getName()))
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.ok, (dialog, which) -> {
joinCall(activity, chatId, "#call");
})
.show();
}
public static void joinCall(Activity activity, int chatId) {
joinCall(activity, chatId, "");
}
private static void joinCall(Activity activity, int chatId, String hash) {
Permissions.with(activity)
.request(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
.ifNecessary()
.withPermanentDenialDialog(activity.getString(R.string.perm_explain_access_to_camera_denied))
.onAllGranted(() -> {
DcContext dcContext = DcHelper.getContext(activity);
DcMsg dcMsg = dcContext.getMsg(msgId);
String url = dcMsg.getVideochatUrl();
if (url.startsWith(DcHelper.DEFAULT_VIDEOCHAT_URL_PREFIX) && url.contains("#")) {
String name = dcContext.getName();
try {
name = URLEncoder.encode(dcContext.getName(), StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException ignored) {}
url += "&userInfo.displayName=%22" + name +"%22";
}
Intent intent = new Intent(activity, VideochatActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra(VideochatActivity.EXTRA_CHAT_ID, dcMsg.getChatId());
intent.putExtra(VideochatActivity.EXTRA_URL, url);
intent.putExtra(VideochatActivity.EXTRA_CHAT_ID, chatId);
intent.putExtra(VideochatActivity.EXTRA_HASH, hash);
activity.startActivity(intent);
})
.execute();