add quick log functionality to debug UP

This commit is contained in:
Daniel Gultsch 2023-12-01 12:04:30 +01:00
parent f8e420ad37
commit eb5994f80f
No known key found for this signature in database
GPG key ID: F43D18AD2A0982C2
4 changed files with 48 additions and 1 deletions

View file

@ -41,6 +41,8 @@ public final class Config {
public static final String LOGTAG = BuildConfig.APP_NAME.toLowerCase(Locale.US);
public static final boolean QUICK_LOG = false;
public static final Jid BUG_REPORTS = Jid.of("bugs@conversations.im");
public static final Uri HELP = Uri.parse("https://help.conversations.im");

View file

@ -112,6 +112,7 @@ public class UnifiedPushBroker {
Log.d(
Config.LOGTAG,
account.getJid().asBareJid() + ": try to renew UnifiedPush " + renewal);
UnifiedPushDistributor.quickLog(service,String.format("%s: try to renew UnifiedPush %s", account.getJid(), renewal.toString()));
final String hashedApplication =
UnifiedPushDistributor.hash(account.getUuid(), renewal.application);
final String hashedInstance =
@ -186,7 +187,16 @@ public class UnifiedPushBroker {
+ renewal.instance
+ " was updated to "
+ endpoint);
final UnifiedPushDatabase.ApplicationEndpoint applicationEndpoint = new UnifiedPushDatabase.ApplicationEndpoint(renewal.application, endpoint);
UnifiedPushDistributor.quickLog(
service,
"endpoint for "
+ renewal.application
+ "/"
+ renewal.instance
+ " was updated to "
+ endpoint);
final UnifiedPushDatabase.ApplicationEndpoint applicationEndpoint =
new UnifiedPushDatabase.ApplicationEndpoint(renewal.application, endpoint);
sendEndpoint(messenger, renewal.instance, applicationEndpoint);
}
}

View file

@ -102,6 +102,7 @@ public class UnifiedPushDistributor extends BroadcastReceiver {
Log.d(
Config.LOGTAG,
"successfully created UnifiedPush entry. waking up XmppConnectionService");
quickLog(context, String.format("successfully registered %s (token = %s) for UnifiedPushed", application, instance));
final Intent serviceIntent = new Intent(context, XmppConnectionService.class);
serviceIntent.setAction(XmppConnectionService.ACTION_RENEW_UNIFIED_PUSH_ENDPOINTS);
serviceIntent.putExtra("instance", instance);
@ -141,6 +142,7 @@ public class UnifiedPushDistributor extends BroadcastReceiver {
}
final UnifiedPushDatabase unifiedPushDatabase = UnifiedPushDatabase.getInstance(context);
if (unifiedPushDatabase.deleteInstance(instance)) {
quickLog(context, String.format("successfully unregistered token %s from UnifiedPushed (application requested unregister)", instance));
Log.d(Config.LOGTAG, "successfully removed " + instance + " from UnifiedPush");
}
}
@ -154,6 +156,7 @@ public class UnifiedPushDistributor extends BroadcastReceiver {
Log.d(Config.LOGTAG, "app " + application + " has been removed from the system");
final UnifiedPushDatabase database = UnifiedPushDatabase.getInstance(context);
if (database.deleteApplication(application)) {
quickLog(context, String.format("successfully removed %s from UnifiedPushed (ACTION_PACKAGE_FULLY_REMOVED)", application));
Log.d(Config.LOGTAG, "successfully removed " + application + " from UnifiedPush");
}
}
@ -166,4 +169,11 @@ public class UnifiedPushDistributor extends BroadcastReceiver {
.hashString(Joiner.on('\0').join(components), Charsets.UTF_8)
.asBytes());
}
public static void quickLog(final Context context, final String message) {
final Intent intent = new Intent(context, XmppConnectionService.class);
intent.setAction(XmppConnectionService.ACTION_QUICK_LOG);
intent.putExtra("message", message);
context.startService(intent);
}
}

View file

@ -133,6 +133,7 @@ import eu.siacs.conversations.ui.UiCallback;
import eu.siacs.conversations.ui.interfaces.OnAvatarPublication;
import eu.siacs.conversations.ui.interfaces.OnMediaLoaded;
import eu.siacs.conversations.ui.interfaces.OnSearchResultsAvailable;
import eu.siacs.conversations.utils.AccountUtils;
import eu.siacs.conversations.utils.Compatibility;
import eu.siacs.conversations.utils.ConversationsFileObserver;
import eu.siacs.conversations.utils.CryptoHelper;
@ -199,6 +200,7 @@ public class XmppConnectionService extends Service {
public static final String ACTION_PROVISION_ACCOUNT = "provision_account";
private static final String ACTION_POST_CONNECTIVITY_CHANGE = "eu.siacs.conversations.POST_CONNECTIVITY_CHANGE";
public static final String ACTION_RENEW_UNIFIED_PUSH_ENDPOINTS = "eu.siacs.conversations.UNIFIED_PUSH_RENEW";
public static final String ACTION_QUICK_LOG = "eu.siacs.conversations.QUICK_LOG";
private static final String SETTING_LAST_ACTIVITY_TS = "last_activity_timestamp";
@ -864,6 +866,12 @@ public class XmppConnectionService extends Service {
case ACTION_FCM_MESSAGE_RECEIVED:
Log.d(Config.LOGTAG, "push message arrived in service. account");
break;
case ACTION_QUICK_LOG:
final String message = intent == null ? null : intent.getStringExtra("message");
if (message != null && Config.QUICK_LOG) {
quickLog(message);
}
break;
case Intent.ACTION_SEND:
final Uri uri = intent == null ? null : intent.getData();
if (uri != null) {
@ -884,6 +892,23 @@ public class XmppConnectionService extends Service {
return START_STICKY;
}
private void quickLog(final String message) {
if (Strings.isNullOrEmpty(message)) {
return;
}
final Account account = AccountUtils.getFirstEnabled(this);
if (account == null) {
return;
}
final Conversation conversation =
findOrCreateConversation(account, Config.BUG_REPORTS, false, true);
final Message report = new Message(conversation, message, Message.ENCRYPTION_NONE);
report.setStatus(Message.STATUS_RECEIVED);
conversation.add(report);
databaseBackend.createMessage(report);
updateConversationUi();
}
private void manageAccountConnectionStatesInternal() {
manageAccountConnectionStates(ACTION_INTERNAL_PING, null);
}