mirror of
https://github.com/mealie-recipes/mealie.git
synced 2024-10-18 05:00:24 -07:00
7e4da3e5a4
refactored signup flow for entire registration process. Utilized seed data option for optional seeding of Foods, Units, and Labels. Localized registration page.
67 lines
1.1 KiB
TypeScript
67 lines
1.1 KiB
TypeScript
import { reactive } from "@nuxtjs/composition-api";
|
|
|
|
export enum States {
|
|
Initial,
|
|
ProvideToken,
|
|
ProvideGroupDetails,
|
|
ProvideCredentials,
|
|
ProvideAccountDetails,
|
|
SelectGroupOptions,
|
|
Confirmation,
|
|
}
|
|
|
|
export enum RegistrationType {
|
|
Unknown,
|
|
JoinGroup,
|
|
CreateGroup,
|
|
InitialGroup,
|
|
}
|
|
|
|
interface Context {
|
|
state: States;
|
|
type: RegistrationType;
|
|
}
|
|
|
|
interface RegistrationContext {
|
|
ctx: Context;
|
|
setState(state: States): void;
|
|
setType(type: RegistrationType): void;
|
|
back(): void;
|
|
}
|
|
|
|
export function useRegistration(): RegistrationContext {
|
|
const context = reactive({
|
|
state: States.Initial,
|
|
type: RegistrationType.Unknown,
|
|
history: [
|
|
{
|
|
state: States.Initial,
|
|
},
|
|
],
|
|
});
|
|
|
|
function saveHistory() {
|
|
context.history.push({
|
|
state: context.state,
|
|
});
|
|
}
|
|
|
|
const back = () => {
|
|
const last = context.history.pop();
|
|
if (last) {
|
|
context.state = last.state;
|
|
}
|
|
};
|
|
|
|
const setState = (state: States) => {
|
|
saveHistory();
|
|
context.state = state;
|
|
};
|
|
|
|
const setType = (t: RegistrationType) => {
|
|
context.type = t;
|
|
};
|
|
|
|
return { ctx: context, setType, setState, back };
|
|
}
|