mirror of
https://github.com/balzack/databag.git
synced 2025-02-12 03:29:16 +00:00
mark conversation update only after login timestamp
This commit is contained in:
parent
31fd45890a
commit
b00d84b05c
14
doc/api.oa3
14
doc/api.oa3
@ -681,7 +681,7 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: string
|
||||
$ref: '#/components/schemas/LoginAccess'
|
||||
'401':
|
||||
description: invalid token
|
||||
'406':
|
||||
@ -3227,6 +3227,18 @@ components:
|
||||
appToken:
|
||||
type: string
|
||||
|
||||
LoginAccess {
|
||||
type: object
|
||||
required:
|
||||
- appToken
|
||||
- created
|
||||
properties:
|
||||
appToken:
|
||||
type: string
|
||||
created:
|
||||
type: integer
|
||||
format: int64
|
||||
|
||||
Revision:
|
||||
type: object
|
||||
required:
|
||||
|
@ -53,6 +53,11 @@ func AddAccountApp(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
WriteResponse(w, account.Guid + "." + access)
|
||||
login := LoginAccess {
|
||||
AppToken: account.Guid + "." + access,
|
||||
Created: app.Created,
|
||||
}
|
||||
|
||||
WriteResponse(w, login)
|
||||
}
|
||||
|
||||
|
@ -322,6 +322,13 @@ type IdList struct {
|
||||
Ids []string `json:"ids"`
|
||||
}
|
||||
|
||||
type LoginAccess struct {
|
||||
|
||||
AppToken string `json:"appToken"`
|
||||
|
||||
Created int64 `json:"created"`
|
||||
}
|
||||
|
||||
type NodeConfig struct {
|
||||
|
||||
Domain string `json:"domain"`
|
||||
|
@ -57,6 +57,14 @@ export function useChannels() {
|
||||
};
|
||||
|
||||
const setUpdated = (chan) => {
|
||||
const login = store.state['login:timestamp'];
|
||||
const update = chan?.data?.channelSummary?.lastTopic?.created;
|
||||
|
||||
if (!update || (login && update < login)) {
|
||||
chan.updated = false;
|
||||
return;
|
||||
}
|
||||
|
||||
let key = `${chan.id}::${chan.cardId}`
|
||||
if (store.state[key] && store.state[key] == chan.revision) {
|
||||
chan.updated = false;
|
||||
|
@ -14,34 +14,6 @@ import { ChannelContext } from './ChannelContext';
|
||||
import { StoreContext } from './StoreContext';
|
||||
import { UploadContext } from './UploadContext';
|
||||
|
||||
async function appCreate(username, password, token, updateState, setWebsocket) {
|
||||
await addAccount(username, password, token);
|
||||
let access = await setLogin(username, password)
|
||||
updateState({ token: access, access: 'user' });
|
||||
setWebsocket(access)
|
||||
localStorage.setItem("session", JSON.stringify({ token: access, access: 'user' }));
|
||||
}
|
||||
|
||||
async function appLogin(username, password, updateState, setWebsocket) {
|
||||
let access = await setLogin(username, password)
|
||||
updateState({ token: access, access: 'user' });
|
||||
setWebsocket(access)
|
||||
localStorage.setItem("session", JSON.stringify({ token: access, access: 'user' }));
|
||||
}
|
||||
|
||||
async function appAccess(token, updateState, setWebsocket) {
|
||||
let access = await setAccountAccess(token)
|
||||
updateState({ token: access, access: 'user' });
|
||||
setWebsocket(access)
|
||||
localStorage.setItem("session", JSON.stringify({ token: access, access: 'user' }));
|
||||
}
|
||||
|
||||
function appLogout(updateState, clearWebsocket) {
|
||||
updateState({ token: null, access: null });
|
||||
clearWebsocket()
|
||||
localStorage.removeItem("session");
|
||||
}
|
||||
|
||||
export function useAppContext() {
|
||||
const [state, setState] = useState(null);
|
||||
const [appRevision, setAppRevision] = useState();
|
||||
@ -97,6 +69,46 @@ export function useAppContext() {
|
||||
}
|
||||
}
|
||||
|
||||
const appCreate = async (username, password, token) => {
|
||||
await addAccount(username, password, token);
|
||||
let access = await setLogin(username, password)
|
||||
updateState({ token: access.appToken, access: 'user' });
|
||||
storeContext.actions.setValue('login:timestamp', access.created);
|
||||
setWebsocket(access.appToken)
|
||||
localStorage.setItem("session", JSON.stringify({
|
||||
token: access.appToken,
|
||||
access: 'user',
|
||||
timestamp: access.created,
|
||||
}));
|
||||
return access.created;
|
||||
}
|
||||
|
||||
const appLogin = async (username, password) => {
|
||||
let access = await setLogin(username, password)
|
||||
updateState({ token: access.appToken, access: 'user' });
|
||||
storeContext.actions.setValue('login:timestamp', access.created);
|
||||
setWebsocket(access.appToken)
|
||||
localStorage.setItem("session", JSON.stringify({
|
||||
token: access.appToken,
|
||||
access: 'user',
|
||||
timestamp: access.created,
|
||||
}));
|
||||
return access.created;
|
||||
}
|
||||
|
||||
const appAccess = async (token) => {
|
||||
let access = await setAccountAccess(token)
|
||||
updateState({ token: access, access: 'user' });
|
||||
setWebsocket(access)
|
||||
localStorage.setItem("session", JSON.stringify({ token: access, access: 'user' }));
|
||||
}
|
||||
|
||||
function appLogout(updateState) {
|
||||
updateState({ token: null, access: null });
|
||||
clearWebsocket()
|
||||
localStorage.removeItem("session");
|
||||
}
|
||||
|
||||
const accessActions = {
|
||||
access: async (token) => {
|
||||
await appAccess(token, updateState, setWebsocket)
|
||||
|
Loading…
Reference in New Issue
Block a user