forked from andyburke/autonomous.contact
fix: make sure things load properly on login/signup
This commit is contained in:
parent
f760156651
commit
e52a9e997c
5 changed files with 81 additions and 61 deletions
|
|
@ -114,62 +114,71 @@
|
|||
update_topics_timeout = undefined;
|
||||
}
|
||||
|
||||
const topics_response = await api.fetch("/api/topics");
|
||||
if (topics_response.ok) {
|
||||
const topic_list = document.getElementById("topic-list");
|
||||
topic_list.innerHTML = "";
|
||||
try {
|
||||
const topics_response = await api.fetch("/api/topics");
|
||||
if (topics_response.ok) {
|
||||
const topic_list = document.getElementById("topic-list");
|
||||
topic_list.innerHTML = "";
|
||||
|
||||
const new_topics = await topics_response.json();
|
||||
const has_differences = TOPICS.length !== new_topics.length || new_topics.some( (topic, index) => {
|
||||
return ( TOPICS[ index ]?.id !== topic.id || TOPICS[ index ]?.name !== topic.name );
|
||||
});
|
||||
const new_topics = await topics_response.json();
|
||||
const has_differences = TOPICS.length !== new_topics.length || new_topics.some( (topic, index) => {
|
||||
return ( TOPICS[ index ]?.id !== topic.id || TOPICS[ index ]?.name !== topic.name );
|
||||
});
|
||||
|
||||
if ( has_differences ) {
|
||||
TOPICS = new_topics;
|
||||
if ( has_differences ) {
|
||||
TOPICS = new_topics;
|
||||
|
||||
document.dispatchEvent(new CustomEvent("topics_updated", { detail: { topics: TOPICS } }));
|
||||
document.dispatchEvent(new CustomEvent("topics_updated", { detail: { topics: TOPICS } }));
|
||||
}
|
||||
|
||||
last_topic_update = now;
|
||||
}
|
||||
|
||||
last_topic_update = now;
|
||||
}
|
||||
catch( error ) {
|
||||
console.error( error );
|
||||
}
|
||||
|
||||
update_topics_timeout = setTimeout( update_topics, UPDATE_TOPICS_FREQUENCY);
|
||||
|
||||
// now that we have topics, make sure our url is all good
|
||||
extract_url_hash_info();
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", async () => {
|
||||
/* check if we are logged in */
|
||||
(async () => {
|
||||
try {
|
||||
const session_response = await api.fetch("/api/users/me");
|
||||
window.addEventListener("locationchange", update_topics);
|
||||
document.addEventListener( 'user_logged_in', update_topics );
|
||||
|
||||
if (!session_response.ok) {
|
||||
const error_body = await session_response.json();
|
||||
const error = error_body?.error;
|
||||
/* check if we are logged in */
|
||||
(async () => {
|
||||
try {
|
||||
const session_response = await api.fetch("/api/users/me");
|
||||
|
||||
console.dir({
|
||||
error_body,
|
||||
error,
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!session_response.ok) {
|
||||
const error_body = await session_response.json();
|
||||
const error = error_body?.error;
|
||||
|
||||
const user = await session_response.json();
|
||||
|
||||
document.body.dataset.user = JSON.stringify( user );
|
||||
document.body.dataset.perms = user.permissions.join(":");
|
||||
|
||||
document.dispatchEvent(new CustomEvent("user_logged_in", { detail: { user } }));
|
||||
|
||||
} catch (error) {
|
||||
console.dir({
|
||||
error_body,
|
||||
error,
|
||||
});
|
||||
return;
|
||||
}
|
||||
})();
|
||||
|
||||
window.addEventListener("locationchange", update_topics);
|
||||
await update_topics();
|
||||
extract_url_hash_info();
|
||||
const user = await session_response.json();
|
||||
|
||||
document.body.dataset.user = JSON.stringify( user );
|
||||
document.body.dataset.perms = user.permissions.join(":");
|
||||
|
||||
document.dispatchEvent(new CustomEvent("user_logged_in", { detail: { user } }));
|
||||
|
||||
} catch (error) {
|
||||
console.dir({
|
||||
error,
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
extract_url_hash_info();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue