Merge branch 'main' into fix/media-services-null-key

This commit is contained in:
Paulo Castellano 2026-07-02 15:34:45 -03:00 committed by GitHub
commit 49e4f36f8d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 28 additions and 0 deletions

View file

@ -150,9 +150,15 @@ public function connect(Request $request): Response|RedirectResponse
'network' => $platform->network(),
])->values();
$plan = Plan::where('slug', Slug::Workspace)->firstOrFail();
return Inertia::render('onboarding/Connect', [
'platforms' => $platforms,
'accounts' => SocialAccountResource::collection($accounts)->resolve(),
'plan' => [
'name' => $plan->name,
'interval' => 'monthly',
],
]);
}

View file

@ -9,14 +9,18 @@ import NetworkConnectGrid, {
type ConnectedAccount,
} from '@/components/accounts/NetworkConnectGrid.vue';
import { Button } from '@/components/ui/button';
import { useTracking } from '@/composables/useTracking';
const props = defineProps<{
platforms: AvailablePlatform[];
accounts: ConnectedAccount[];
plan: { name: string; interval: string };
}>();
const form = useForm({});
const { trackBeginCheckout } = useTracking();
const hasConnected = computed((): boolean => props.accounts.length > 0);
const submit = (): void => {
@ -24,6 +28,8 @@ const submit = (): void => {
return;
}
trackBeginCheckout({ name: props.plan.name, interval: props.plan.interval });
form.post(checkout.url());
};
</script>

View file

@ -263,6 +263,22 @@ function subscribeOnboardingAccount(Account $account): void
);
});
test('connect passes the workspace plan so the client can fire begin_checkout', function () {
$this->user->update(['persona' => Persona::Agency->value, 'goals' => [Goal::SaveTime->value]]);
onboardingWorkspace($this->user);
$plan = Plan::where('slug', Slug::Workspace)->firstOrFail();
$response = $this->actingAs($this->user->fresh())->get(route('app.onboarding.connect'));
$response->assertOk();
$response->assertInertia(fn ($page) => $page
->component('onboarding/Connect')
->where('plan.name', $plan->name)
->where('plan.interval', 'monthly')
);
});
test('connect offers a single linkedin card and no standalone linkedin page card', function () {
$this->user->update(['persona' => Persona::Agency->value, 'goals' => [Goal::SaveTime->value]]);
onboardingWorkspace($this->user);