mirror of
https://github.com/kamranahmedse/developer-roadmap.git
synced 2026-03-12 17:51:53 +08:00
* wip: custom roadmap renderer * wip: custom roadmap events * wip: roadmap content * wip: svg styles * wip: custom roadmap progress * Render progress * Shortcut progress * Progress Tracking styles * wip: edit and share button * fix: disabled the share button * wip: content links rendering * Fix progress share * Replace disabled with `canShare` * wip: show custom roadmaps * wip: users all roadmaps * fix: create roadmap api * chore: roadmap sidebar icon * wip: content links * Update links color * Create roadmap home * Create Roadmap button * Roadmap type * chore: share progress modal * wip: share roadmap * wip: change visibility * chore: custom roadmap progress in activity * wip: custom roadmap share progress * chore: friend's roadmap * wip: custom roadmap skeleton * chore: roadmap title * Restricted Page * fix: skeleton loading width * Fix create roadmap button * chore: remove user id * chore: pick roadmap and share * chore: open new tab on create roadmap * chore: change share title * chore: use team id from params * chore: team roadmap create modal * chore: create team roadmap * chore: custom roadmap modal * chore: placeholde roadmaps * chore: roadmap hint * chore: visibility label * chore: public roadmap * chore: empty screen * chore: team progress * chore: create roadmap responsive * chore: form error * chore: multi user history * wip: manage custom roadmap * chore: empty roadmap list * chore: custom roadmap visit * chore: shared roadmaps * chore: shared roadmaps * chore: empty screen and topic title * chore: show progress bar * Implement Error in topic details * Add Modal close button * fix: link groups * Refactor roadmap creation * Refactor roadmap creation * Refactor team creation * Refactor team roadmaps * Refactor team creation roadmap selection * Refactor * Refactor team roadmap loading * Refactor team roadmaps * Refactor team roadmaps listing * Refactor Account dropdown * Updates * Refactor Account dropdown * Fix Team name overflow * Change Icon color * Update team dropdown * Minor UI fixes * Fix minor UI * Flicker fix in team dropdown * Roadmap action dropdown with responsiveness * Team roadmaps listing * Update team settings * Team roadmaps listing * fix: remove visibility change * Update roadmap options modal * Add dummy renderer * Add renderer script * Add generate renderer script * Add generate renderer * wip: add share settings * Update * Update UI * Update Minor UI * Fix team issue * Update Personal roadmaps UI * Add Roadmap Secret * Update teams type * Rearrange sections * Change Secret name * Add action button on roadmap detail page --------- Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
92 lines
2.1 KiB
TypeScript
92 lines
2.1 KiB
TypeScript
import Cookies from 'js-cookie';
|
|
import { TOKEN_COOKIE_NAME } from '../../lib/jwt';
|
|
|
|
function easeInElement(el: Element) {
|
|
el.classList.add('opacity-0', 'transition-opacity', 'duration-300');
|
|
el.classList.remove('hidden');
|
|
setTimeout(() => {
|
|
el.classList.remove('opacity-0');
|
|
});
|
|
}
|
|
|
|
function showHideAuthElements(hideOrShow: 'hide' | 'show' = 'hide') {
|
|
document.querySelectorAll('[data-auth-required]').forEach((el) => {
|
|
if (hideOrShow === 'hide') {
|
|
el.classList.add('hidden');
|
|
} else {
|
|
easeInElement(el);
|
|
}
|
|
});
|
|
}
|
|
|
|
function showHideGuestElements(hideOrShow: 'hide' | 'show' = 'hide') {
|
|
document.querySelectorAll('[data-guest-required]').forEach((el) => {
|
|
if (hideOrShow === 'hide') {
|
|
el.classList.add('hidden');
|
|
} else {
|
|
easeInElement(el);
|
|
}
|
|
});
|
|
}
|
|
|
|
// Prepares the UI for the user who is logged in
|
|
function handleGuest() {
|
|
const authenticatedRoutes = [
|
|
'/account/update-profile',
|
|
'/account/notification',
|
|
'/account/update-password',
|
|
'/account/settings',
|
|
'/account/roadmaps',
|
|
'/account/road-card',
|
|
'/account/friends',
|
|
'/account',
|
|
'/team',
|
|
'/team/progress',
|
|
'/team/roadmaps',
|
|
'/team/new',
|
|
'/team/members',
|
|
'/team/settings',
|
|
];
|
|
|
|
showHideAuthElements('hide');
|
|
showHideGuestElements('show');
|
|
|
|
// If the user is on an authenticated route, redirect them to the home page
|
|
if (authenticatedRoutes.includes(window.location.pathname)) {
|
|
window.location.href = '/';
|
|
}
|
|
}
|
|
|
|
// Prepares the UI for the user who is logged out
|
|
function handleAuthenticated() {
|
|
const guestRoutes = [
|
|
'/login',
|
|
'/signup',
|
|
'/verify-account',
|
|
'/verification-pending',
|
|
'/reset-password',
|
|
'/forgot-password',
|
|
];
|
|
|
|
showHideGuestElements('hide');
|
|
showHideAuthElements('show');
|
|
|
|
// If the user is on a guest route, redirect them to the home page
|
|
if (guestRoutes.includes(window.location.pathname)) {
|
|
window.location.href = '/';
|
|
}
|
|
}
|
|
|
|
export function handleAuthRequired() {
|
|
const token = Cookies.get(TOKEN_COOKIE_NAME);
|
|
if (token) {
|
|
handleAuthenticated();
|
|
} else {
|
|
handleGuest();
|
|
}
|
|
}
|
|
|
|
window.setTimeout(() => {
|
|
handleAuthRequired();
|
|
}, 0);
|