Anonymous chat user: store last nickname in localStorage, and expires
after 12 hours
This commit is contained in:
parent
e3a61b95b6
commit
5e60060052
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
### Minor changes and fixes
|
### Minor changes and fixes
|
||||||
|
|
||||||
* Anonymous chat user: remember the chosen nickname in sessionStorage, to avoid entering it again too often.
|
* Anonymous chat user: remember the chosen nickname in localStorage, to avoid entering it again too often. Nickname will expire after 12 hours.
|
||||||
* Fix: if an anonymous chat user enter spaces in the nickname choice, it will allows them to keep the random nickname.
|
* Fix: if an anonymous chat user enter spaces in the nickname choice, it allowed them to keep the random nickname.
|
||||||
* Authenticated users: if current user nickname is already used in the room, automatically add a suffix.
|
* Authenticated users: if current user nickname is already used in the room, automatically add a suffix.
|
||||||
* UX: add a label ('Choose a nickname to enter') for the anonymous nickname prompt. Fix #287.
|
* UX: add a label ('Choose a nickname to enter') for the anonymous nickname prompt. Fix #287.
|
||||||
* Translation updates: German, French.
|
* Translation updates: German, French.
|
||||||
|
@ -10,12 +10,28 @@ function randomNick (base: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the previous anonymous nickname (stored in sessionStorage).
|
* Get the previous anonymous nickname (stored in localStorage).
|
||||||
|
* If it was set more than 12 hours ago, it will be ignored (considering the nickname should not remain forever).
|
||||||
* @returns previous nickname or null
|
* @returns previous nickname or null
|
||||||
*/
|
*/
|
||||||
function getPreviousAnonymousNick (): string | null {
|
function getPreviousAnonymousNick (): string | null {
|
||||||
try {
|
try {
|
||||||
return sessionStorage.getItem('livechat-previous-anonymous-nickname')
|
const lastAccess = parseInt(localStorage.getItem('livechat-previous-anonymous-nickname-last-access') ?? '0')
|
||||||
|
const now = Date.now()
|
||||||
|
if (lastAccess && !isNaN(lastAccess)) {
|
||||||
|
const expires = lastAccess + 1000 * 60 * 60 * 12 // nickname expires after 12 hours
|
||||||
|
if (now > expires) {
|
||||||
|
console.log('Anonymous nickname has expired.')
|
||||||
|
localStorage.removeItem('livechat-previous-anonymous-nickname')
|
||||||
|
localStorage.removeItem('livechat-previous-anonymous-nickname-last-access')
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const nick = localStorage.getItem('livechat-previous-anonymous-nickname')
|
||||||
|
if (nick !== null) {
|
||||||
|
localStorage.setItem('livechat-previous-anonymous-nickname-last-access', now.toString())
|
||||||
|
}
|
||||||
|
return nick
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
return null
|
return null
|
||||||
@ -23,12 +39,13 @@ function getPreviousAnonymousNick (): string | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the chosen nickname in sessionStorage.
|
* Stores the chosen nickname in localStorage.
|
||||||
*/
|
*/
|
||||||
function setPreviousAnonymousNick (nick: string): void {
|
function setPreviousAnonymousNick (nick: string): void {
|
||||||
try {
|
try {
|
||||||
console.log('Storing anonymous nickname', nick)
|
console.log('Storing anonymous nickname', nick)
|
||||||
sessionStorage.setItem('livechat-previous-anonymous-nickname', nick)
|
localStorage.setItem('livechat-previous-anonymous-nickname', nick)
|
||||||
|
localStorage.setItem('livechat-previous-anonymous-nickname-last-access', Date.now().toString())
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user