Hi,
I am using flow router and blaze.
I am calling a meteor method to get info from the database.
Which is the correct place ?
Template.Page_practice.onCreated or Template.Page_practice.onRendered ?
and why ?
Hi,
I am using flow router and blaze.
I am calling a meteor method to get info from the database.
Which is the correct place ?
Template.Page_practice.onCreated or Template.Page_practice.onRendered ?
and why ?
I prefer to put data loading and validation in onCreated, because it happens earlier and reduces the delay until that data is available to the template
Do you know how to wait for Meteor.logginIn() ?
I am always redirected when hitting the refresh button on the browser:
let adminRoutes = FlowRouter.group({
  prefix: '/admin',
  triggersEnter: [function(context, redirect) {
    let redirection = false;
    if (!Meteor.loggingIn() && !Meteor.userId()) {
      redirection = true;
    } else {
      let user = Meteor.user();
      redirection = !user.isAdmin;
    }
    if (redirection) {
      redirect('/');
    }
  }],
  titlePrefix() {
    return 'MassEducationWeapon | ';
  }
});
            I’ve just got them as a group:
const loggedInRoutes = FlowRouter.group({
  name: 'loggedIn',
  triggersEnter: [
    (context, redirect) => {
      if (!Meteor.userId() && !Meteor.loggingIn()) {
        const current = FlowRouter.current();
        if (current.route.name !== 'login') {
          RouterState.set('redirectAfterLogin', current.path);
          redirect('login');
        }
      }
    },
  ],
});
For admin roles I’m using alanning:roles, which means having to wait for the roles subscription before routing:
// Pause FlowRouter until Roles information is ready
FlowRouter.wait();
  Tracker.autorun(() => {
  // if the roles subscription is ready, start routing
  // there are specific cases that this reruns, so we also check
  // that FlowRouter hasn't initalized already
  if (!FlowRouter._initialized && Roles.subscription.ready()) {
    FlowRouter.initialize();
  }
});
// loggedInRoutes definition here
const adminRoutes = loggedInRoutes.group({
  prefix: '/admin',
  triggersEnter: [
    function(context, redirect) {
      if (!Roles.userIsInRole(Meteor.user(), ['admin'])) {
        redirect('root');
      }
    },
  ],
});
            Thanks a lot.
FlowRouter.wait(); is what I was looking for.
Where do you call it ?
By the way, redirect(‘root’); I understand that the redirect function only works with urls and not with route names.
I call it at the top of my routes file
I’m using ostrio:flow-router-extra, so redirect behaves exactly like FlowRouter.go. ie. can point to route names: https://github.com/VeliovGroup/flow-router/blob/master/docs/full.md#triggersenter
Thanks a lot, you saved me with this code.
I was blocked with this for a month.