Skip to content

Commit f2237f2

Browse files
committed
chore(playground): more stuff
1 parent 62f6985 commit f2237f2

File tree

3 files changed

+73
-7
lines changed

3 files changed

+73
-7
lines changed

packages/playground/app/components/message/MessageItem.vue

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ const props = defineProps<{
77
const store = useStore()
88
99
const { data: message } = await store.Message.queryFirst(props.id)
10+
11+
async function updateText() {
12+
const { faker } = await import('@faker-js/faker')
13+
14+
await message.value?.$update({
15+
text: faker.lorem.paragraph(),
16+
})
17+
}
1018
</script>
1119

1220
<template>
@@ -55,6 +63,14 @@ const { data: message } = await store.Message.queryFirst(props.id)
5563
<span class="opacity-50 ml-auto text-sm">
5664
{{ message.timeAgo }}
5765
</span>
66+
67+
<UButton
68+
icon="lucide:edit"
69+
label="Update text"
70+
size="xs"
71+
variant="ghost"
72+
@click="updateText()"
73+
/>
5874
</div>
5975
<p
6076
class="px-4 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg"

packages/playground/app/pages/messages/cache.vue

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,57 @@ const store = useStore()
33
44
// Load all messages
55
const [
6-
{ data: messages },
7-
{ data: users },
8-
{ data: bots },
6+
{ data: messages, refresh: refreshMessages },
7+
{ data: users, refresh: refreshUsers },
8+
{ data: bots, refresh: refreshBots },
99
] = await Promise.all([
1010
store.Message.queryMany(),
1111
store.User.queryMany(),
1212
store.Bot.queryMany(),
1313
])
1414
15+
async function refresh() {
16+
await Promise.all([
17+
refreshMessages(),
18+
refreshUsers(),
19+
refreshBots(),
20+
])
21+
}
22+
1523
const selectedUser = shallowRef<typeof users.value[number] | null>(users.value?.[0] ?? null)
24+
25+
const receivedMessages = computed(() => selectedUser.value?.receivedMessages ?? [])
26+
const sentMessages = computed(() => selectedUser.value?.sentMessages ?? [])
27+
28+
async function sendMessage(receive = false) {
29+
if (!selectedUser.value) {
30+
return
31+
}
32+
33+
const { faker } = await import('@faker-js/faker')
34+
35+
const selectedUserId = selectedUser.value.id
36+
const recipientIds = users.value.map(user => user.id).filter(id => id !== selectedUserId)
37+
const recipientId = recipientIds[Math.floor(Math.random() * recipientIds.length)]
38+
39+
await store.Message.create({
40+
authorId: receive ? recipientId : selectedUserId,
41+
recipientId: receive ? selectedUserId : recipientId,
42+
text: faker.lorem.paragraph(),
43+
})
44+
}
1645
</script>
1746

1847
<template>
1948
<div class="p-4 space-y-4">
2049
<h1>Read related items from cache</h1>
2150

51+
<UButton
52+
icon="lucide:refresh-cw"
53+
label="Refresh"
54+
@click="refresh()"
55+
/>
56+
2257
<div class="flex overflow-x-auto">
2358
<UButtonGroup>
2459
<UButton
@@ -37,6 +72,19 @@ const selectedUser = shallowRef<typeof users.value[number] | null>(users.value?.
3772
</div>
3873

3974
<div v-if="selectedUser">
75+
<div class="flex gap-2">
76+
<UButton
77+
icon="lucide:arrow-up"
78+
label="Send message"
79+
@click="sendMessage()"
80+
/>
81+
<UButton
82+
icon="lucide:arrow-down"
83+
label="Receive message"
84+
@click="sendMessage(true)"
85+
/>
86+
</div>
87+
4088
<UTabs
4189
:items="[
4290
{
@@ -55,14 +103,14 @@ const selectedUser = shallowRef<typeof users.value[number] | null>(users.value?.
55103
<template #received>
56104
<div>
57105
<MessageItem
58-
v-for="{ id } in selectedUser.receivedMessages"
106+
v-for="{ id } in receivedMessages"
59107
:id
60108
:key="id"
61109
skip-nested-fetch
62110
/>
63111

64112
<div
65-
v-if="!selectedUser.receivedMessages.length"
113+
v-if="!receivedMessages.length"
66114
class="text-center text-gray-500 p-4"
67115
>
68116
No messages
@@ -73,14 +121,14 @@ const selectedUser = shallowRef<typeof users.value[number] | null>(users.value?.
73121
<template #sent>
74122
<div>
75123
<MessageItem
76-
v-for="{ id } in selectedUser.sentMessages"
124+
v-for="{ id } in sentMessages"
77125
:id
78126
:key="id"
79127
skip-nested-fetch
80128
/>
81129

82130
<div
83-
v-if="!selectedUser.sentMessages.length"
131+
v-if="!sentMessages.length"
84132
class="text-center text-gray-500 p-4"
85133
>
86134
No messages

packages/playground/app/pages/todo/index.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ createTodo.$onSuccess(() => {
4343

4444
<UButton
4545
icon="lucide:refresh-cw"
46+
color="neutral"
47+
variant="soft"
4648
class="px-3"
4749
@click="refresh()"
4850
/>

0 commit comments

Comments
 (0)