made disabled notifications permanent across restarts
This commit is contained in:
parent
d5227e5c25
commit
919c98207b
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public class NotificationService {
|
|||
public int NOTIFICATION_ID = 0x2342;
|
||||
private Conversation mOpenConversation;
|
||||
private boolean mIsInForeground;
|
||||
|
||||
|
||||
private long mEndGracePeriod = 0L;
|
||||
|
||||
public NotificationService(XmppConnectionService service) {
|
||||
|
@ -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,15 +226,15 @@ 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() {
|
||||
this.mEndGracePeriod = 0L;
|
||||
}
|
||||
|
||||
|
||||
private boolean inGracePeriod() {
|
||||
return SystemClock.elapsedRealtime() < this.mEndGracePeriod;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -131,9 +131,9 @@ public class ConversationFragment extends Fragment {
|
|||
activity.endConversation(conversation);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private OnClickListener joinMuc = new OnClickListener() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
activity.xmppConnectionService.joinMuc(conversation);
|
||||
|
@ -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;
|
||||
|
|
|
@ -425,7 +425,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
|
|||
view.getLayoutParams().height = 1;
|
||||
} else {
|
||||
view.getLayoutParams().height = 0;
|
||||
|
||||
|
||||
}
|
||||
view.setLayoutParams(view.getLayoutParams());
|
||||
return view;
|
||||
|
|
Loading…
Reference in a new issue