Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
117 lines
2.7 KiB
JavaScript
117 lines
2.7 KiB
JavaScript
'use client'
|
|
|
|
import { useState } from 'react'
|
|
|
|
export default function ActionButtons({
|
|
successAction,
|
|
multiArgAction,
|
|
redirectAction,
|
|
notFoundAction,
|
|
errorAction,
|
|
objectArgAction,
|
|
arrayArgAction,
|
|
inlineAction,
|
|
promiseArgAction,
|
|
}) {
|
|
const [result, setResult] = useState(null)
|
|
const [error, setError] = useState(null)
|
|
|
|
const handleSuccess = async () => {
|
|
setError(null)
|
|
const res = await successAction(5)
|
|
setResult(res)
|
|
}
|
|
|
|
const handleMultiArg = async () => {
|
|
setError(null)
|
|
const res = await multiArgAction(1, 2, 3)
|
|
setResult(res)
|
|
}
|
|
|
|
const handleRedirect = async () => {
|
|
setError(null)
|
|
await redirectAction('/redirect-target')
|
|
}
|
|
|
|
const handleNotFound = async () => {
|
|
setError(null)
|
|
try {
|
|
await notFoundAction()
|
|
} catch (e) {
|
|
setError('notFound triggered')
|
|
}
|
|
}
|
|
|
|
const handleError = async () => {
|
|
setError(null)
|
|
try {
|
|
await errorAction()
|
|
} catch (e) {
|
|
setError(e.message)
|
|
}
|
|
}
|
|
|
|
const handleObjectArg = async () => {
|
|
setError(null)
|
|
const res = await objectArgAction({ name: 'test', value: 42 })
|
|
setResult(res)
|
|
}
|
|
|
|
const handleArrayArg = async () => {
|
|
setError(null)
|
|
const res = await arrayArgAction([1, 2, 3, 4, 5])
|
|
setResult(res)
|
|
}
|
|
|
|
const handleInline = async () => {
|
|
setError(null)
|
|
const res = await inlineAction(10)
|
|
setResult({ doubled: res })
|
|
}
|
|
|
|
const handlePromiseArg = async () => {
|
|
setError(null)
|
|
const res = await promiseArgAction(Promise.resolve('hello'))
|
|
setResult(res)
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<h1>Server Action Logging Test</h1>
|
|
|
|
<div>
|
|
<button id="success-action" onClick={handleSuccess}>
|
|
Success Action
|
|
</button>
|
|
<button id="multi-arg-action" onClick={handleMultiArg}>
|
|
Multi Arg Action
|
|
</button>
|
|
<button id="redirect-action" onClick={handleRedirect}>
|
|
Redirect Action
|
|
</button>
|
|
<button id="not-found-action" onClick={handleNotFound}>
|
|
NotFound Action
|
|
</button>
|
|
<button id="error-action" onClick={handleError}>
|
|
Error Action
|
|
</button>
|
|
<button id="object-arg-action" onClick={handleObjectArg}>
|
|
Object Arg Action
|
|
</button>
|
|
<button id="array-arg-action" onClick={handleArrayArg}>
|
|
Array Arg Action
|
|
</button>
|
|
<button id="inline-action" onClick={handleInline}>
|
|
Inline Action
|
|
</button>
|
|
<button id="promise-arg-action" onClick={handlePromiseArg}>
|
|
Promise Arg Action
|
|
</button>
|
|
</div>
|
|
|
|
{result && <pre id="result">{JSON.stringify(result, null, 2)}</pre>}
|
|
{error && <p id="error">{error}</p>}
|
|
</div>
|
|
)
|
|
}
|