Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gajim
gajim
Commits
40f537cd
Commit
40f537cd
authored
Nov 13, 2017
by
Philipp Hörist
Browse files
Save last archive timestamps in DB
- A Migration from last_mam_id config value is included
parent
95357361
Changes
2
Hide whitespace changes
Inline
Side-by-side
gajim/common/config.py
View file @
40f537cd
...
...
@@ -409,8 +409,6 @@ class Config:
'oauth2_client_id'
:
[
opt_str
,
'0000000044077801'
,
_
(
'client_id for OAuth 2.0 authentication.'
)],
'oauth2_redirect_url'
:
[
opt_str
,
'https%3A%2F%2Fgajim.org%2Fmsnauth%2Findex.cgi'
,
_
(
'redirect_url for OAuth 2.0 authentication.'
)],
'opened_chat_controls'
:
[
opt_str
,
''
,
_
(
'Space separated list of JIDs for which we want to re-open a chat window on next startup.'
)],
'last_mam_id'
:
[
opt_str
,
''
,
_
(
'Last MAM id we are syncronized with'
)],
'mam_start_date'
:
[
opt_int
,
0
,
_
(
'The earliest date we requested MAM history for'
)],
},
{}),
'statusmsg'
:
({
'message'
:
[
opt_str
,
''
],
...
...
gajim/common/message_archiving.py
View file @
40f537cd
...
...
@@ -115,21 +115,25 @@ def _result_finished(self, conn, stanza, query_id, start_date, groupchat):
return
last
=
set_
.
getTagData
(
'last'
)
if
last
is
None
:
log
.
info
(
'End of MAM query, no items retrieved'
)
return
jid
=
str
(
stanza
.
getFrom
())
complete
=
fin
.
getAttr
(
'complete'
)
if
last
is
not
None
:
if
not
groupchat
:
app
.
config
.
set_per
(
'accounts'
,
self
.
name
,
'last_mam_id'
,
last
)
if
complete
!=
'true'
:
query_id
=
self
.
get_query_id
()
query
=
self
.
get_archive_query
(
query_id
,
after
=
last
)
self
.
send_archive_query
(
query
,
query_id
,
groupchat
=
groupchat
)
if
complete
==
'true'
:
app
.
logger
.
set_archive_timestamp
(
jid
,
last_mam_id
=
last
)
if
complete
!=
'true'
:
query_id
=
self
.
get_query_id
()
query
=
self
.
get_archive_query
(
query_id
,
after
=
last
)
self
.
send_archive_query
(
query
,
query_id
,
groupchat
=
groupchat
)
else
:
self
.
mam_query_ids
.
remove
(
query_id
)
if
not
groupchat
and
start_date
is
not
None
:
app
.
config
.
set_per
(
'accounts'
,
self
.
name
,
'mam_start_date'
,
start_date
.
timestamp
())
if
start_date
is
not
None
:
app
.
logger
.
set_archive_timestamp
(
jid
,
last_mam_id
=
last
,
oldest_mam_timestamp
=
start_date
.
timestamp
())
log
.
info
(
'End of MAM query, last mam id: %s'
,
last
)
def
_nec_mam_decrypted_message_received
(
self
,
obj
):
if
obj
.
conn
.
name
!=
self
.
name
:
...
...
@@ -157,7 +161,15 @@ def get_query_id(self):
return
query_id
def
request_archive_on_signin
(
self
):
mam_id
=
app
.
config
.
get_per
(
'accounts'
,
self
.
name
,
'last_mam_id'
)
own_jid
=
self
.
get_own_jid
().
getStripped
()
archive
=
app
.
logger
.
get_archive_timestamp
(
own_jid
)
# Migration of last_mam_id from config to DB
if
archive
is
not
None
:
mam_id
=
archive
.
last_mam_id
else
:
mam_id
=
app
.
config
.
get_per
(
'accounts'
,
self
.
name
,
'last_mam_id'
)
start_date
=
None
query_id
=
self
.
get_query_id
()
if
mam_id
:
...
...
@@ -171,11 +183,19 @@ def request_archive_on_signin(self):
self
.
send_archive_query
(
query
,
query_id
,
start_date
)
def
request_archive_on_muc_join
(
self
,
jid
):
# First Start, we request one month
start_date
=
datetime
.
utcnow
()
-
timedelta
(
days
=
30
)
archive
=
app
.
logger
.
get_archive_timestamp
(
jid
)
query_id
=
self
.
get_query_id
()
log
.
info
(
'First join: query archive start: %s'
,
start_date
)
query
=
self
.
get_archive_query
(
query_id
,
jid
=
jid
,
start
=
start_date
)
start_date
=
None
if
archive
is
not
None
:
log
.
info
(
'Query Groupchat MAM Archive %s after %s:'
,
jid
,
archive
.
last_mam_id
)
query
=
self
.
get_archive_query
(
query_id
,
jid
=
jid
,
after
=
archive
.
last_mam_id
)
else
:
# First Start, we request one month
start_date
=
datetime
.
utcnow
()
-
timedelta
(
days
=
30
)
log
.
info
(
'First join: query archive %s from: %s'
,
jid
,
start_date
)
query
=
self
.
get_archive_query
(
query_id
,
jid
=
jid
,
start
=
start_date
)
self
.
send_archive_query
(
query
,
query_id
,
start_date
,
groupchat
=
True
)
def
send_archive_query
(
self
,
query
,
query_id
,
start_date
=
None
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment