Messaging: Implement per conversation channels. Update API level to 28.
* Get rid of in-app settings for notifications, replaced by channels features * Remove all the notification plumbing and dead code Test: m, manual Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com> Signed-off-by: Joey <joey@lineageos.org> Signed-off-by: Danny Baumann <dannybaumann@web.de> Signed-off-by: Arne Coucheron <arco68@gmail.com> Signed-off-by: Lyubo <lyubodzhamov@gmail.com> Change-Id: Idb39ca32751d40b3376934775d2119dd6cc7e297
This commit is contained in:
@@ -35,6 +35,7 @@ import com.android.messaging.datamodel.MessagingContentProvider;
|
||||
import com.android.messaging.sms.MmsUtils;
|
||||
import com.android.messaging.util.Assert;
|
||||
import com.android.messaging.util.LogUtil;
|
||||
import com.android.messaging.util.NotificationsUtil;
|
||||
import com.android.messaging.widget.WidgetConversationProvider;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -118,6 +119,10 @@ public class DeleteConversationAction extends Action implements Parcelable {
|
||||
+ " has an invalid telephony thread id; will delete messages individually");
|
||||
deleteConversationMessagesFromTelephony();
|
||||
}
|
||||
|
||||
// Finally, remove the conversation specific notification channel
|
||||
NotificationsUtil.deleteNotificationChannel(Factory.get().getApplicationContext(),
|
||||
conversationId);
|
||||
} else {
|
||||
LogUtil.e(TAG, "DeleteConversationAction: conversationId is empty");
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ public class GetOrCreateConversationAction extends Action implements Parcelable
|
||||
}
|
||||
|
||||
final String conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
|
||||
false, participants, false, false, null);
|
||||
false, participants);
|
||||
|
||||
return conversationId;
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ public class InsertNewMessageAction extends Action implements Parcelable {
|
||||
}
|
||||
|
||||
final String conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
|
||||
false, participants, false, false, null);
|
||||
false, participants);
|
||||
|
||||
final ParticipantData self = BugleDatabaseOperations.getOrCreateSelf(db, subId);
|
||||
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.messaging.datamodel.action;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import com.android.messaging.datamodel.BugleDatabaseOperations;
|
||||
import com.android.messaging.datamodel.DataModel;
|
||||
import com.android.messaging.datamodel.DatabaseHelper.ConversationColumns;
|
||||
import com.android.messaging.datamodel.DatabaseWrapper;
|
||||
import com.android.messaging.datamodel.MessagingContentProvider;
|
||||
import com.android.messaging.util.Assert;
|
||||
|
||||
/**
|
||||
* Action used to update conversation options such as notification settings.
|
||||
*/
|
||||
public class UpdateConversationOptionsAction extends Action
|
||||
implements Parcelable {
|
||||
/**
|
||||
* Enable/disable conversation notifications.
|
||||
*/
|
||||
public static void enableConversationNotifications(final String conversationId,
|
||||
final boolean enableNotification) {
|
||||
Assert.notNull(conversationId);
|
||||
|
||||
final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
|
||||
conversationId, enableNotification, null, null);
|
||||
action.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets conversation notification sound.
|
||||
*/
|
||||
public static void setConversationNotificationSound(final String conversationId,
|
||||
final String ringtoneUri) {
|
||||
Assert.notNull(conversationId);
|
||||
|
||||
final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
|
||||
conversationId, null, ringtoneUri, null);
|
||||
action.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/disable vibrations for conversation notification.
|
||||
*/
|
||||
public static void enableVibrationForConversationNotification(final String conversationId,
|
||||
final boolean enableVibration) {
|
||||
Assert.notNull(conversationId);
|
||||
|
||||
final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
|
||||
conversationId, null, null, enableVibration);
|
||||
action.start();
|
||||
}
|
||||
|
||||
private static final String KEY_CONVERSATION_ID = "conversation_id";
|
||||
|
||||
// Keys for all settable settings.
|
||||
private static final String KEY_ENABLE_NOTIFICATION = "enable_notification";
|
||||
private static final String KEY_RINGTONE_URI = "ringtone_uri";
|
||||
private static final String KEY_ENABLE_VIBRATION = "enable_vibration";
|
||||
|
||||
protected UpdateConversationOptionsAction(final String conversationId,
|
||||
final Boolean enableNotification, final String ringtoneUri,
|
||||
final Boolean enableVibration) {
|
||||
Assert.notNull(conversationId);
|
||||
actionParameters.putString(KEY_CONVERSATION_ID, conversationId);
|
||||
if (enableNotification != null) {
|
||||
actionParameters.putBoolean(KEY_ENABLE_NOTIFICATION, enableNotification);
|
||||
}
|
||||
|
||||
if (ringtoneUri != null) {
|
||||
actionParameters.putString(KEY_RINGTONE_URI, ringtoneUri);
|
||||
}
|
||||
|
||||
if (enableVibration != null) {
|
||||
actionParameters.putBoolean(KEY_ENABLE_VIBRATION, enableVibration);
|
||||
}
|
||||
}
|
||||
|
||||
protected void putOptionValuesInTransaction(final ContentValues values,
|
||||
final DatabaseWrapper dbWrapper) {
|
||||
Assert.isTrue(dbWrapper.getDatabase().inTransaction());
|
||||
if (actionParameters.containsKey(KEY_ENABLE_NOTIFICATION)) {
|
||||
values.put(ConversationColumns.NOTIFICATION_ENABLED,
|
||||
actionParameters.getBoolean(KEY_ENABLE_NOTIFICATION));
|
||||
}
|
||||
|
||||
if (actionParameters.containsKey(KEY_RINGTONE_URI)) {
|
||||
values.put(ConversationColumns.NOTIFICATION_SOUND_URI,
|
||||
actionParameters.getString(KEY_RINGTONE_URI));
|
||||
}
|
||||
|
||||
if (actionParameters.containsKey(KEY_ENABLE_VIBRATION)) {
|
||||
values.put(ConversationColumns.NOTIFICATION_VIBRATION,
|
||||
actionParameters.getBoolean(KEY_ENABLE_VIBRATION));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object executeAction() {
|
||||
final String conversationId = actionParameters.getString(KEY_CONVERSATION_ID);
|
||||
|
||||
final DatabaseWrapper db = DataModel.get().getDatabase();
|
||||
db.beginTransaction();
|
||||
try {
|
||||
final ContentValues values = new ContentValues();
|
||||
putOptionValuesInTransaction(values, db);
|
||||
|
||||
BugleDatabaseOperations.updateConversationRowIfExists(db, conversationId, values);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
MessagingContentProvider.notifyConversationMetadataChanged(conversationId);
|
||||
return null;
|
||||
}
|
||||
|
||||
protected UpdateConversationOptionsAction(final Parcel in) {
|
||||
super(in);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<UpdateConversationOptionsAction> CREATOR
|
||||
= new Parcelable.Creator<UpdateConversationOptionsAction>() {
|
||||
@Override
|
||||
public UpdateConversationOptionsAction createFromParcel(final Parcel in) {
|
||||
return new UpdateConversationOptionsAction(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UpdateConversationOptionsAction[] newArray(final int size) {
|
||||
return new UpdateConversationOptionsAction[size];
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void writeToParcel(final Parcel parcel, final int flags) {
|
||||
writeActionToParcel(parcel, flags);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user