All files / app/guard installed-mod.guard.ts

30.76% Statements 4/13
0% Branches 0/10
0% Functions 0/3
36.36% Lines 4/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 171x     1x 1x   1x                    
import { inject } from '@angular/core';
import { CanActivateFn, createUrlTreeFromSnapshot, RedirectCommand } from '@angular/router';
import { isString } from 'lodash-es';
import { AdminService } from '../service/admin.service';
import { Store } from '../store/store';
 
export const installedModGuard = (tag: string, redirect: (string | (() => string))[]) => {
  const fn: CanActivateFn = ((route, state) => {
    const admin = inject(AdminService);
    const installed = !!admin.getPlugin(tag) || !!admin.getTemplate(tag);
    const badUser = tag === 'user' && !inject(Store).account.localTag;
    if (!badUser && installed) return true;
    return new RedirectCommand(createUrlTreeFromSnapshot(route, redirect.map(r => isString(r) ? r : r())));
  });
  return fn;
};