Merge pull request #554 from matrix-org/erikj/event_push
Change event_push_actions_rm_tokens schema
This commit is contained in:
commit
8450114098
|
@ -706,10 +706,8 @@ class SyncHandler(BaseHandler):
|
||||||
)
|
)
|
||||||
|
|
||||||
if notifs is not None:
|
if notifs is not None:
|
||||||
unread_notifications["notification_count"] = len(notifs)
|
unread_notifications["notification_count"] = notifs["notify_count"]
|
||||||
unread_notifications["highlight_count"] = len([
|
unread_notifications["highlight_count"] = notifs["highlight_count"]
|
||||||
1 for notif in notifs if _action_has_highlight(notif["actions"])
|
|
||||||
])
|
|
||||||
|
|
||||||
logger.debug("Room sync: %r", room_sync)
|
logger.debug("Room sync: %r", room_sync)
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ class Pusher(object):
|
||||||
r.room_id, self.user_id, last_unread_event_id
|
r.room_id, self.user_id, last_unread_event_id
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
badge += len(notifs)
|
badge += notifs["notify_count"]
|
||||||
defer.returnValue(badge)
|
defer.returnValue(badge)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,11 @@ class EventPushActionsStore(SQLBaseStore):
|
||||||
'event_id': event.event_id,
|
'event_id': event.event_id,
|
||||||
'user_id': uid,
|
'user_id': uid,
|
||||||
'profile_tag': profile_tag,
|
'profile_tag': profile_tag,
|
||||||
'actions': json.dumps(actions)
|
'actions': json.dumps(actions),
|
||||||
|
'stream_ordering': event.internal_metadata.stream_ordering,
|
||||||
|
'topological_ordering': event.depth,
|
||||||
|
'notif': 1,
|
||||||
|
'highlight': 1 if _action_has_highlight(actions) else 0,
|
||||||
})
|
})
|
||||||
|
|
||||||
def f(txn):
|
def f(txn):
|
||||||
|
@ -74,26 +78,28 @@ class EventPushActionsStore(SQLBaseStore):
|
||||||
topological_ordering = results[0][1]
|
topological_ordering = results[0][1]
|
||||||
|
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT ea.event_id, ea.actions"
|
"SELECT sum(notif), sum(highlight)"
|
||||||
" FROM event_push_actions ea, events e"
|
" FROM event_push_actions ea"
|
||||||
" WHERE ea.room_id = e.room_id"
|
" WHERE"
|
||||||
" AND ea.event_id = e.event_id"
|
" user_id = ?"
|
||||||
" AND ea.user_id = ?"
|
" AND room_id = ?"
|
||||||
" AND ea.room_id = ?"
|
|
||||||
" AND ("
|
" AND ("
|
||||||
" e.topological_ordering > ?"
|
" topological_ordering > ?"
|
||||||
" OR (e.topological_ordering = ? AND e.stream_ordering > ?)"
|
" OR (topological_ordering = ? AND stream_ordering > ?)"
|
||||||
")"
|
")"
|
||||||
)
|
)
|
||||||
txn.execute(sql, (
|
txn.execute(sql, (
|
||||||
user_id, room_id,
|
user_id, room_id,
|
||||||
topological_ordering, topological_ordering, stream_ordering
|
topological_ordering, topological_ordering, stream_ordering
|
||||||
)
|
))
|
||||||
)
|
row = txn.fetchone()
|
||||||
return [
|
if row:
|
||||||
{"event_id": row[0], "actions": json.loads(row[1])}
|
return {
|
||||||
for row in txn.fetchall()
|
"notify_count": row[0] or 0,
|
||||||
]
|
"highlight_count": row[1] or 0,
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
return {"notify_count": 0, "highlight_count": 0}
|
||||||
|
|
||||||
ret = yield self.runInteraction(
|
ret = yield self.runInteraction(
|
||||||
"get_unread_event_push_actions_by_room",
|
"get_unread_event_push_actions_by_room",
|
||||||
|
@ -117,3 +123,14 @@ class EventPushActionsStore(SQLBaseStore):
|
||||||
"remove_push_actions_for_event_id",
|
"remove_push_actions_for_event_id",
|
||||||
f
|
f
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _action_has_highlight(actions):
|
||||||
|
for action in actions:
|
||||||
|
try:
|
||||||
|
if action.get("set_tweak", None) == "highlight":
|
||||||
|
return action.get("value", True)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
|
@ -25,7 +25,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Remember to update this number every time a change is made to database
|
# Remember to update this number every time a change is made to database
|
||||||
# schema files, so the users will be informed on server restarts.
|
# schema files, so the users will be informed on server restarts.
|
||||||
SCHEMA_VERSION = 28
|
SCHEMA_VERSION = 29
|
||||||
|
|
||||||
dir_path = os.path.abspath(os.path.dirname(__file__))
|
dir_path = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Copyright 2016 OpenMarket Ltd
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ALTER TABLE event_push_actions ADD COLUMN topological_ordering BIGINT;
|
||||||
|
ALTER TABLE event_push_actions ADD COLUMN stream_ordering BIGINT;
|
||||||
|
ALTER TABLE event_push_actions ADD COLUMN notif SMALLINT;
|
||||||
|
ALTER TABLE event_push_actions ADD COLUMN highlight SMALLINT;
|
||||||
|
|
||||||
|
UPDATE event_push_actions SET stream_ordering = (
|
||||||
|
SELECT stream_ordering FROM events WHERE event_id = event_push_actions.event_id
|
||||||
|
), topological_ordering = (
|
||||||
|
SELECT topological_ordering FROM events WHERE event_id = event_push_actions.event_id
|
||||||
|
);
|
||||||
|
|
||||||
|
UPDATE event_push_actions SET notif = 1, highlight = 0;
|
||||||
|
|
||||||
|
CREATE INDEX event_push_actions_rm_tokens on event_push_actions(
|
||||||
|
user_id, room_id, topological_ordering, stream_ordering
|
||||||
|
);
|
Loading…
Reference in New Issue