Skip to content

Commit

Permalink
chore(examples): make all server functions async (dai-shi#778)
Browse files Browse the repository at this point in the history
  • Loading branch information
dai-shi authored and himself65 committed Jul 9, 2024
1 parent 21fcbe8 commit a1d06b7
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 25 deletions.
13 changes: 2 additions & 11 deletions examples/11_form/src/components/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,14 @@ import { Form } from './Form';
import { ServerForm } from './ServerForm';
import { getMessage, greet, increment } from './funcs';

type ServerFunction<T> = T extends (...args: infer A) => infer R
? (...args: A) => Promise<R>
: never;

const App = ({ name }: { name: string }) => {
return (
<div style={{ border: '3px red dashed', margin: '1em', padding: '1em' }}>
<title>Waku</title>
<h1>Hello {name}!!</h1>
<h3>This is a server component.</h3>
<Counter
increment={increment as unknown as ServerFunction<typeof increment>}
/>
<Form
message={getMessage()}
greet={greet as unknown as ServerFunction<typeof greet>}
/>
<Counter increment={increment} />
<Form message={getMessage()} greet={greet} />
<ServerForm />
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion examples/11_form/src/components/Form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export const Form = ({
message,
greet,
}: {
message: string;
message: Promise<string>;
greet: (formData: FormData) => Promise<void>;
}) => (
<div style={{ border: '3px blue dashed', margin: '1em', padding: '1em' }}>
Expand Down
6 changes: 3 additions & 3 deletions examples/11_form/src/components/funcs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import { rerender } from 'waku/server';
// module state on server
let message = '';

export const getMessage = () => message;
export const getMessage = async () => message;

export const greet = (formData: FormData) => {
export const greet = async (formData: FormData) => {
message = `Hello ${formData.get('name') || 'Anonymous'} from server!`;
rerender('');
};

export const increment = (count: number) => count + 1;
export const increment = async (count: number) => count + 1;
9 changes: 1 addition & 8 deletions examples/23_actions/src/components2/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,14 @@ import Counter from './Counter';
import { greet, getCounter, increment } from './funcs';
import ButtonServer from './ButtonServer';

type ServerFunction<T> = T extends (...args: infer A) => infer R
? (...args: A) => Promise<R>
: never;

const App = ({ name }: { name: string }) => {
return (
<div style={{ border: '3px red dashed', margin: '1em', padding: '1em' }}>
<title>Waku</title>
<h1>Hello {name}!!</h1>
<h3>This is a server component.</h3>
<p>Server counter: {getCounter()}</p>
<Counter
greet={greet}
increment={increment as unknown as ServerFunction<typeof increment>}
/>
<Counter greet={greet} increment={increment} />
<Balancer>My Awesome Title</Balancer>
<ButtonServer name="Button1" />
<ButtonServer name="Button2" />
Expand Down
4 changes: 2 additions & 2 deletions examples/23_actions/src/components2/funcs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ export const greet = async (name: string) => {
// module state on server
let counter = 0;

export const getCounter = () => counter;
export const getCounter = async () => counter;

export const increment = () => {
export const increment = async () => {
counter += 1;
rerender('Waku');
};

0 comments on commit a1d06b7

Please sign in to comment.