mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2025-12-13 05:26:47 +00:00
feat: handle logout events in nostr-login
This commit introduces handling for logout events in nostr-login across various pages. When a user logs out, the current public key and other related information are reset to null. The nostrLogin.js file has also been updated to dispatch a 'nostrLoggedOut' event when this occurs. Additionally, the nostr-login package has been added to the project dependencies.
This commit is contained in:
@@ -1,29 +1,48 @@
|
||||
import {init as initNostrLogin} from 'nostr-login';
|
||||
|
||||
export default () => ({
|
||||
|
||||
openNostrLogin() {
|
||||
window.nostr.getPublicKey();
|
||||
},
|
||||
|
||||
init() {
|
||||
// listen for nostr auth events
|
||||
document.addEventListener('nlAuth', (e) => {
|
||||
// type is login, signup or logout
|
||||
if (e.detail.type === 'login' || e.detail.type === 'signup') {
|
||||
console.log('User logged in');
|
||||
async init() {
|
||||
await initNostrLogin({
|
||||
methods: ['connect', 'extension'],
|
||||
onAuth: async (npub, options) => {
|
||||
console.log('User logged in', npub, options);
|
||||
console.log('type', options.method);
|
||||
if (options.method === 'readOnly') {
|
||||
console.log('User logged in as read-only');
|
||||
return;
|
||||
}
|
||||
if (options.method === undefined) {
|
||||
Alpine.store('nostr', {user: null});
|
||||
this.$dispatch('nostrLoggedOut', {});
|
||||
return;
|
||||
}
|
||||
const pubkey = await window.nostr.getPublicKey();
|
||||
// fetch profile from /api/nostr/profile/{publicKey}
|
||||
fetch('/api/nostr/profile/' + e.detail.pubkey)
|
||||
fetch('/api/nostr/profile/' + pubkey)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
console.log('Profile fetched', data);
|
||||
// store the profile in AlpineJS store
|
||||
Alpine.store('nostr', { user: data });
|
||||
Alpine.store('nostr', {user: data});
|
||||
this.$dispatch('nostrLoggedIn', {pubkey: data.pubkey});
|
||||
document.addEventListener('nlAuth', (e) => {
|
||||
// type is login, signup or logout
|
||||
if (e.detail.type === 'login' || e.detail.type === 'signup') {
|
||||
|
||||
} else {
|
||||
console.log('User logged out')
|
||||
Alpine.store('nostr', {user: null});
|
||||
this.$dispatch('nostrLoggedOut', {});
|
||||
}
|
||||
})
|
||||
});
|
||||
} else {
|
||||
console.log('User logged out')
|
||||
Alpine.store('nostr', { user: null });
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user