As a user of a company, I want to sync contacts changes of my company
Activity
-
Newest first Oldest first
-
Show all activity Show comments only Show history only
- Dat PHAM HOANG added To do label
added To do label
- Dat PHAM HOANG changed the description
changed the description
- Owner
Hi @dphamhoang,
could you describe the API you want here ?
- Author Owner
yeah, I want to cache the whole list in client side (don't want to fetch the whole list all the time). So I want to
sync
the change when open the app.But if this endpoint take you a huge effort, please ignore it for now. Come back to it later.
- Owner
Maybe not a huge work, but I'd like to know which behavior you want
- Author Owner
Scenario:
- client gets the whole list at
State A
-> cache the list +State A
- LDAP has some changes (new joiner, someone left, ...) -> Contact list will be in
State B
- client need to
sync
the alpha fromState A
toState B
Questions:
- Do we need this? Do you think it is good or not
- Can you suggest the alternative way?
Edited by Dat PHAM HOANG - client gets the whole list at
- Owner
Hi @dphamhoang, alternative to get a stateless API:
- at regular intervals, the app pushes his list of contacts: _(new API inspired from matrix/lookup):
{ "algorithm": "sha256", "pepper": "aaaaaaa", "addresses": { "company1.com": ["aaa", "bbb", "ccc"], "company2.com": ["ddd", "eee", "fff"], } }
- the (federation) identity server send responses only from the servers (domains) it knows:
{ "company1": { "aaa": "@dwho:company1.com", "bbb": "@rtyler:company1.com", "ccc": null } }
- the app then knows that:
- this server doesn't know "company2.com", then no changes are possible here
- the user corresponding to "ccc" hash has no more any account in "company1.com"
Edited by Xavier GUIMARD - Dat PHAM HOANG removed To do label
removed To do label
- Xavier GUIMARD assigned to @xguimard
assigned to @xguimard
- Owner
Hi @dphamhoang, do you agree with my proposition ?
- Author Owner
no, it is not what I want to say. I only want to get the change of company's contacts.
Today (t), contacts list from
lookup/match
with 100,Next day (t + 1), contact list (identity server) right now are 120.
I don't want to call
lookup/match
again, I only want to callsync
to get new contacts (20)Edited by Dat PHAM HOANG - Author Owner
So IMO, we can ignore it in M0
- Owner
Part of your contact may come from unknown servers.
- We can detect inactive users in domain owned by a Twake server (and synchronized with Federation ID Server after M0)
- But what do you call new contacts ? New users in the same organization ? Automatically added to your contacts ?
Edited by Xavier GUIMARD - Author Owner
But what do you call new contacts ? New users in the same organization ?
yes, new employers of Linagora, or someone resigns.
Edited by Dat PHAM HOANG Collapse replies - Owner
That can be an acceptable feature for little companies (not for bigs!), do you plan to prompt user with the list of all new employees ?
- Author Owner
yes, plan to fetch all employee this sprint
- Owner
New employee since when, 1 day ?
- Author Owner
so that why I propose we need
state
:( - Owner
State by device or by user ? After a query, automatically reset state ?
Edited by Xavier GUIMARD - Owner
Storing client state on server side is always a bad idea. Imagine that client queries the server but has a network connection problem during response receive, when it will query a new time the server, the response will be different. We can use here an API inspired from HTTP cache: "Give me new users since XX". Then API becomes stateless
Edited by Xavier GUIMARD - Please register or sign in to reply
- Xavier GUIMARD mentioned in commit 96453f7c
mentioned in commit 96453f7c
- Xavier GUIMARD mentioned in commit 6bc0714a
mentioned in commit 6bc0714a
- Xavier GUIMARD mentioned in merge request !36 (merged)
mentioned in merge request !36 (merged)
- Xavier GUIMARD mentioned in commit f862f966
mentioned in commit f862f966
- Xavier GUIMARD mentioned in commit df4454d7
mentioned in commit df4454d7
- Xavier GUIMARD closed with merge request !36 (merged)
closed with merge request !36 (merged)