made disabled notifications permanent across restarts

This commit is contained in:
iNPUTmice 2014-10-07 15:18:09 +02:00
parent d5227e5c25
commit 919c98207b
5 changed files with 34 additions and 17 deletions

View file

@ -43,6 +43,7 @@ public class Conversation extends AbstractEntity {
public static final String ATTRIBUTE_NEXT_ENCRYPTION = "next_encryption";
public static final String ATTRIBUTE_MUC_PASSWORD = "muc_password";
public static final String ATTRIBUTE_MUTED_TILL = "muted_till";
private String name;
private String contactUuid;
@ -54,8 +55,6 @@ public class Conversation extends AbstractEntity {
private JSONObject attributes = new JSONObject();
private long mutedTill = 0;
private String nextPresence;
private transient CopyOnWriteArrayList<Message> messages = null;
@ -452,12 +451,13 @@ public class Conversation extends AbstractEntity {
return false;
}
public void setMutedTill(long mutedTill) {
this.mutedTill = mutedTill;
public void setMutedTill(long value) {
this.setAttribute(ATTRIBUTE_MUTED_TILL, String.valueOf(value));
}
public boolean isMuted() {
return SystemClock.elapsedRealtime() < this.mutedTill;
return SystemClock.elapsedRealtime() < this.getLongAttribute(
ATTRIBUTE_MUTED_TILL, 0);
}
public boolean setAttribute(String key, String value) {
@ -489,4 +489,17 @@ public class Conversation extends AbstractEntity {
}
}
}
public long getLongAttribute(String key, long defaultValue) {
String value = this.getAttribute(key);
if (value == null) {
return defaultValue;
} else {
try {
return Long.parseLong(value);
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
}

View file

@ -60,8 +60,8 @@ public class NotificationService {
mList.add(message);
notifications.put(conversationUuid, mList);
}
updateNotification((!(this.mIsInForeground && this.mOpenConversation == null)
|| !isScreenOn) && !inGracePeriod());
updateNotification((!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
&& !inGracePeriod());
}
public void clear() {
@ -226,9 +226,9 @@ public class NotificationService {
this.mIsInForeground = foreground;
}
public void activateGracePeriod() {
this.mEndGracePeriod = SystemClock.elapsedRealtime() + (Config.CARBON_GRACE_PERIOD * 1000);
this.mEndGracePeriod = SystemClock.elapsedRealtime()
+ (Config.CARBON_GRACE_PERIOD * 1000);
}
public void deactivateGracePeriod() {

View file

@ -585,6 +585,8 @@ public class ConversationActivity extends XmppActivity implements
+ (durations[which] * 1000);
}
conversation.setMutedTill(till);
activity.xmppConnectionService.databaseBackend
.updateConversation(conversation);
ConversationFragment selectedFragment = (ConversationFragment) getFragmentManager()
.findFragmentByTag("conversation");
if (selectedFragment != null) {

View file

@ -438,6 +438,8 @@ public class ConversationFragment extends Fragment {
@Override
public void onClick(View v) {
conversation.setMutedTill(0);
activity.xmppConnectionService.databaseBackend
.updateConversation(conversation);
updateMessages();
}
});
@ -502,8 +504,8 @@ public class ConversationFragment extends Fragment {
R.string.leave, leaveMuc);
break;
case MucOptions.KICKED_FROM_ROOM:
showSnackbar(R.string.conference_kicked,
R.string.join, joinMuc);
showSnackbar(R.string.conference_kicked, R.string.join,
joinMuc);
break;
default:
break;