Adding api automation workflow
This commit is contained in:
+185
-12
@@ -194,12 +194,21 @@ type MemorializeBirdFormState = {
|
||||
notifyOnMemorialDay: boolean;
|
||||
};
|
||||
|
||||
type RescueOnboardingFormState = {
|
||||
name: string;
|
||||
city: string;
|
||||
state: string;
|
||||
ein: string;
|
||||
website: string;
|
||||
};
|
||||
|
||||
type WorkspaceFormState = {
|
||||
name: string;
|
||||
workspaceType: WorkspaceType;
|
||||
billingEmail: string;
|
||||
billingPlan: HouseholdBillingPlan;
|
||||
billingInterval: BillingInterval;
|
||||
rescueOnboarding: RescueOnboardingFormState;
|
||||
};
|
||||
|
||||
type WorkspaceMemberFormState = {
|
||||
@@ -214,6 +223,7 @@ type WorkspaceCreateFormState = {
|
||||
billingEmail: string;
|
||||
billingPlan: HouseholdBillingPlan;
|
||||
billingInterval: BillingInterval;
|
||||
rescueOnboarding: RescueOnboardingFormState;
|
||||
};
|
||||
|
||||
type AuthFormState = {
|
||||
@@ -320,12 +330,21 @@ const emptyMemorializeBirdForm = (): MemorializeBirdFormState => ({
|
||||
notifyOnMemorialDay: false,
|
||||
});
|
||||
|
||||
const emptyRescueOnboardingForm = (): RescueOnboardingFormState => ({
|
||||
name: '',
|
||||
city: '',
|
||||
state: '',
|
||||
ein: '',
|
||||
website: '',
|
||||
});
|
||||
|
||||
const emptyWorkspaceForm: WorkspaceFormState = {
|
||||
name: 'My Flock',
|
||||
workspaceType: 'standard',
|
||||
billingEmail: '',
|
||||
billingPlan: 'household_basic',
|
||||
billingInterval: 'monthly',
|
||||
rescueOnboarding: emptyRescueOnboardingForm(),
|
||||
};
|
||||
|
||||
const emptyWorkspaceMemberForm: WorkspaceMemberFormState = {
|
||||
@@ -340,6 +359,7 @@ const emptyWorkspaceCreateForm: WorkspaceCreateFormState = {
|
||||
billingEmail: '',
|
||||
billingPlan: 'household_basic',
|
||||
billingInterval: 'monthly',
|
||||
rescueOnboarding: emptyRescueOnboardingForm(),
|
||||
};
|
||||
|
||||
const emptyAuthForm: AuthFormState = {
|
||||
@@ -1594,6 +1614,7 @@ function App() {
|
||||
billingEmail: session.activeWorkspace.billingEmail ?? '',
|
||||
billingPlan: isHouseholdPlan(session.activeWorkspace.billingPlan) ? session.activeWorkspace.billingPlan : 'household_basic',
|
||||
billingInterval: session.activeWorkspace.billingInterval,
|
||||
rescueOnboarding: emptyRescueOnboardingForm(),
|
||||
});
|
||||
setWorkspaceCreateForm((current) => ({
|
||||
...current,
|
||||
@@ -2250,6 +2271,7 @@ function App() {
|
||||
billingEmail: workspaceCreateForm.billingEmail,
|
||||
billingPlan: workspaceCreateForm.workspaceType === 'rescue' ? undefined : workspaceCreateForm.billingPlan,
|
||||
billingInterval: workspaceCreateForm.workspaceType === 'rescue' ? undefined : workspaceCreateForm.billingInterval,
|
||||
rescueOnboarding: workspaceCreateForm.workspaceType === 'rescue' ? workspaceCreateForm.rescueOnboarding : undefined,
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -3123,6 +3145,7 @@ function App() {
|
||||
...workspaceForm,
|
||||
billingPlan: workspaceForm.workspaceType === 'rescue' ? undefined : workspaceForm.billingPlan,
|
||||
billingInterval: workspaceForm.workspaceType === 'rescue' ? undefined : workspaceForm.billingInterval,
|
||||
rescueOnboarding: workspace?.workspaceType === 'standard' && workspaceForm.workspaceType === 'rescue' ? workspaceForm.rescueOnboarding : undefined,
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -3156,6 +3179,7 @@ function App() {
|
||||
billingEmail: savedWorkspace.billingEmail ?? '',
|
||||
billingPlan: isHouseholdPlan(savedWorkspace.billingPlan) ? savedWorkspace.billingPlan : 'household_basic',
|
||||
billingInterval: savedWorkspace.billingInterval,
|
||||
rescueOnboarding: emptyRescueOnboardingForm(),
|
||||
});
|
||||
|
||||
return savedWorkspace;
|
||||
@@ -3259,6 +3283,7 @@ function App() {
|
||||
billingEmail: savedWorkspace.billingEmail ?? '',
|
||||
billingPlan: isHouseholdPlan(savedWorkspace.billingPlan) ? savedWorkspace.billingPlan : 'household_basic',
|
||||
billingInterval: savedWorkspace.billingInterval,
|
||||
rescueOnboarding: emptyRescueOnboardingForm(),
|
||||
});
|
||||
} catch (workspaceError) {
|
||||
setError(workspaceError instanceof Error ? workspaceError.message : 'Unable to cancel rescue status request.');
|
||||
@@ -4547,12 +4572,20 @@ function App() {
|
||||
Flock type
|
||||
<select
|
||||
value={workspaceForm.workspaceType}
|
||||
onChange={(event) =>
|
||||
onChange={(event) => {
|
||||
const workspaceType = event.target.value as WorkspaceFormState['workspaceType'];
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
workspaceType: event.target.value as WorkspaceFormState['workspaceType'],
|
||||
})
|
||||
}
|
||||
workspaceType,
|
||||
rescueOnboarding:
|
||||
workspaceType === 'rescue'
|
||||
? {
|
||||
...workspaceForm.rescueOnboarding,
|
||||
name: workspaceForm.rescueOnboarding.name || workspaceForm.name,
|
||||
}
|
||||
: workspaceForm.rescueOnboarding,
|
||||
});
|
||||
}}
|
||||
>
|
||||
<option value="standard">Standard household</option>
|
||||
<option value="rescue">Rescue</option>
|
||||
@@ -4567,6 +4600,72 @@ function App() {
|
||||
</span>
|
||||
</article>
|
||||
) : null}
|
||||
{workspace?.workspaceType === 'standard' && workspaceForm.workspaceType === 'rescue' ? (
|
||||
<section className="settings-nested-card">
|
||||
<h3>Rescue onboarding</h3>
|
||||
<label>
|
||||
Rescue Name
|
||||
<input
|
||||
value={workspaceForm.rescueOnboarding.name}
|
||||
onChange={(event) =>
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
rescueOnboarding: { ...workspaceForm.rescueOnboarding, name: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
City
|
||||
<input
|
||||
value={workspaceForm.rescueOnboarding.city}
|
||||
onChange={(event) =>
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
rescueOnboarding: { ...workspaceForm.rescueOnboarding, city: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
State
|
||||
<input
|
||||
value={workspaceForm.rescueOnboarding.state}
|
||||
onChange={(event) =>
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
rescueOnboarding: { ...workspaceForm.rescueOnboarding, state: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
EIN
|
||||
<input
|
||||
value={workspaceForm.rescueOnboarding.ein}
|
||||
onChange={(event) =>
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
rescueOnboarding: { ...workspaceForm.rescueOnboarding, ein: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
Website
|
||||
<input
|
||||
type="url"
|
||||
value={workspaceForm.rescueOnboarding.website}
|
||||
onChange={(event) =>
|
||||
setWorkspaceForm({
|
||||
...workspaceForm,
|
||||
rescueOnboarding: { ...workspaceForm.rescueOnboarding, website: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
</section>
|
||||
) : null}
|
||||
{workspaceForm.workspaceType === 'rescue' ? (
|
||||
<article className="summary-card">
|
||||
<strong>{formatBillingPlanName('rescue_free')}</strong>
|
||||
@@ -4958,12 +5057,20 @@ function App() {
|
||||
Flock type
|
||||
<select
|
||||
value={workspaceCreateForm.workspaceType}
|
||||
onChange={(event) =>
|
||||
onChange={(event) => {
|
||||
const workspaceType = event.target.value as WorkspaceCreateFormState['workspaceType'];
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
workspaceType: event.target.value as WorkspaceCreateFormState['workspaceType'],
|
||||
})
|
||||
}
|
||||
workspaceType,
|
||||
rescueOnboarding:
|
||||
workspaceType === 'rescue'
|
||||
? {
|
||||
...workspaceCreateForm.rescueOnboarding,
|
||||
name: workspaceCreateForm.rescueOnboarding.name || workspaceCreateForm.name,
|
||||
}
|
||||
: workspaceCreateForm.rescueOnboarding,
|
||||
});
|
||||
}}
|
||||
>
|
||||
<option value="standard">Standard household</option>
|
||||
<option value="rescue">Rescue</option>
|
||||
@@ -5011,10 +5118,76 @@ function App() {
|
||||
</article>
|
||||
</>
|
||||
) : (
|
||||
<article className="summary-card">
|
||||
<strong>{formatBillingPlanName('rescue_free')}</strong>
|
||||
<span>No billing is applied to rescue flocks.</span>
|
||||
</article>
|
||||
<>
|
||||
<section className="settings-nested-card">
|
||||
<h3>Rescue onboarding</h3>
|
||||
<label>
|
||||
Rescue Name
|
||||
<input
|
||||
value={workspaceCreateForm.rescueOnboarding.name}
|
||||
onChange={(event) =>
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
rescueOnboarding: { ...workspaceCreateForm.rescueOnboarding, name: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
City
|
||||
<input
|
||||
value={workspaceCreateForm.rescueOnboarding.city}
|
||||
onChange={(event) =>
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
rescueOnboarding: { ...workspaceCreateForm.rescueOnboarding, city: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
State
|
||||
<input
|
||||
value={workspaceCreateForm.rescueOnboarding.state}
|
||||
onChange={(event) =>
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
rescueOnboarding: { ...workspaceCreateForm.rescueOnboarding, state: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
EIN
|
||||
<input
|
||||
value={workspaceCreateForm.rescueOnboarding.ein}
|
||||
onChange={(event) =>
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
rescueOnboarding: { ...workspaceCreateForm.rescueOnboarding, ein: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
Website
|
||||
<input
|
||||
type="url"
|
||||
value={workspaceCreateForm.rescueOnboarding.website}
|
||||
onChange={(event) =>
|
||||
setWorkspaceCreateForm({
|
||||
...workspaceCreateForm,
|
||||
rescueOnboarding: { ...workspaceCreateForm.rescueOnboarding, website: event.target.value },
|
||||
})
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
</section>
|
||||
<article className="summary-card">
|
||||
<strong>{formatBillingPlanName('rescue_free')}</strong>
|
||||
<span>No billing is applied to rescue flocks.</span>
|
||||
</article>
|
||||
</>
|
||||
)}
|
||||
<label>
|
||||
Billing contact email
|
||||
|
||||
Reference in New Issue
Block a user