MMMMMMMMMMMMMMMM types
This commit is contained in:
@@ -88,6 +88,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IServer } from '~/types';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@@ -99,7 +100,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
async createServer() {
|
async createServer() {
|
||||||
const globalStore = useGlobalStore();
|
const globalStore = useGlobalStore();
|
||||||
const { server } = await $fetch('/api/channels/create', { method: 'post', body: { serverName: this.serverName } })
|
const server: IServer = await $fetch('/api/channels/create', { method: 'post', body: { serverName: this.serverName } })
|
||||||
this.createServerModelOpen = false;
|
this.createServerModelOpen = false;
|
||||||
this.serverName = '';
|
this.serverName = '';
|
||||||
globalStore.addServer(server)
|
globalStore.addServer(server)
|
||||||
|
|||||||
26
package-lock.json
generated
26
package-lock.json
generated
@@ -16,6 +16,8 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nuxt/kit": "^3.0.0",
|
"@nuxt/kit": "^3.0.0",
|
||||||
|
"@types/bcryptjs": "^2.4.2",
|
||||||
|
"@types/uuid": "^9.0.0",
|
||||||
"autoprefixer": "^10.4.13",
|
"autoprefixer": "^10.4.13",
|
||||||
"postcss": "^8.4.20",
|
"postcss": "^8.4.20",
|
||||||
"prisma": "^4.8.0",
|
"prisma": "^4.8.0",
|
||||||
@@ -1104,6 +1106,12 @@
|
|||||||
"node": ">=10.13.0"
|
"node": ">=10.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/bcryptjs": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@types/cookie": {
|
"node_modules/@types/cookie": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
||||||
@@ -1132,6 +1140,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
||||||
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
|
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/uuid": {
|
||||||
|
"version": "9.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.0.tgz",
|
||||||
|
"integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@unhead/dom": {
|
"node_modules/@unhead/dom": {
|
||||||
"version": "1.0.14",
|
"version": "1.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.0.14.tgz",
|
||||||
@@ -8493,6 +8507,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
|
||||||
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
|
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
|
||||||
},
|
},
|
||||||
|
"@types/bcryptjs": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@types/cookie": {
|
"@types/cookie": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
||||||
@@ -8521,6 +8541,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
||||||
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
|
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
|
||||||
},
|
},
|
||||||
|
"@types/uuid": {
|
||||||
|
"version": "9.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.0.tgz",
|
||||||
|
"integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@unhead/dom": {
|
"@unhead/dom": {
|
||||||
"version": "1.0.14",
|
"version": "1.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.0.14.tgz",
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nuxt/kit": "^3.0.0",
|
"@nuxt/kit": "^3.0.0",
|
||||||
|
"@types/bcryptjs": "^2.4.2",
|
||||||
|
"@types/uuid": "^9.0.0",
|
||||||
"autoprefixer": "^10.4.13",
|
"autoprefixer": "^10.4.13",
|
||||||
"postcss": "^8.4.20",
|
"postcss": "^8.4.20",
|
||||||
"prisma": "^4.8.0",
|
"prisma": "^4.8.0",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IChannel } from '~/types'
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
@@ -13,18 +14,17 @@ export default {
|
|||||||
async setup() {
|
async setup() {
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const { channel: server } = await $fetch(`/api/channels/${route.params.id}`)
|
const server: IChannel = await $fetch(`/api/channels/${route.params.id}`)
|
||||||
if (!server) return;
|
if (!server) return;
|
||||||
useGlobalStore().addDM(server);
|
useGlobalStore().addDM(server);
|
||||||
await useGlobalStore().setActive('dms', server.id);
|
useGlobalStore().setActive('dms', server.id);
|
||||||
|
|
||||||
console.log(server)
|
|
||||||
return {
|
return {
|
||||||
server,
|
server,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async updated() {
|
async updated() {
|
||||||
if (!useGlobalStore().activeServer == this.server) await useGlobalStore().setActive('dms', this.server.id)
|
if (!useGlobalStore().activeServer == this.server) useGlobalStore().setActive('dms', this.server.id)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -5,8 +5,9 @@
|
|||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IChannel } from '~/types'
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
@@ -20,7 +21,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async startDM() {
|
async startDM() {
|
||||||
const { server } = await $fetch('/api/channels/createDM', { method: 'post', body: { partnerId: this.userId } })
|
const server: IChannel = await $fetch('/api/channels/createDM', { method: 'post', body: { partnerId: this.userId } })
|
||||||
|
|
||||||
useGlobalStore().addDM(server)
|
useGlobalStore().addDM(server)
|
||||||
useRouter().push({ path: '/channel/@me/' + server.id })
|
useRouter().push({ path: '/channel/@me/' + server.id })
|
||||||
|
|||||||
@@ -2,36 +2,34 @@
|
|||||||
<MessagePane :server="server" />
|
<MessagePane :server="server" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script async setup lang="ts">
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
|
const server: IChannel = await $fetch(`/api/channels/${route.params.id}`)
|
||||||
|
|
||||||
|
const realServer = useGlobalStore().user.servers.find((e) => e.channels.some((el) => el.id == route.params.id))
|
||||||
|
|
||||||
|
if (realServer) {
|
||||||
|
useGlobalStore().addServer(realServer);
|
||||||
|
useGlobalStore().setActive('servers', realServer.id)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IChannel } from '~/types'
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
middleware: 'auth'
|
middleware: 'auth'
|
||||||
})
|
})
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
async setup() {
|
|
||||||
const route = useRoute()
|
|
||||||
|
|
||||||
const { channel: server } = await $fetch(`/api/channels/${route.params.id}`)
|
|
||||||
if (!server) return;
|
|
||||||
|
|
||||||
const realServer = await useGlobalStore().user.servers.find((e) => e.channels.some((el) => el.id == route.params.id ) )
|
|
||||||
|
|
||||||
useGlobalStore().addServer(realServer);
|
|
||||||
await useGlobalStore().setActive('servers', realServer.id)
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
|
||||||
server
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async updated() {
|
async updated() {
|
||||||
if (!this.server) return;
|
if (!this.server) return;
|
||||||
|
|
||||||
this.server = await $fetch(`/api/channels/${route.params.id}`);
|
this.server = await $fetch(`/api/channels/${route.params.id}`);
|
||||||
|
|
||||||
if (!await useGlobalStore().activeServer == this.server.id) await useGlobalStore().setActive('servers', this.server.id)
|
if (!useGlobalStore().activeServer == this.server.id) useGlobalStore().setActive('servers', this.server.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -20,8 +20,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IUser } from '~/types';
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: 'clean'
|
layout: 'clean'
|
||||||
@@ -42,14 +43,14 @@ export default {
|
|||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password
|
password: this.password
|
||||||
}
|
}
|
||||||
})
|
}) as { userId: string; token: string; user: IUser; }
|
||||||
|
|
||||||
const userId = useCookie('userId')
|
const userId = useCookie('userId')
|
||||||
userId.value = user.userId
|
userId.value = user.userId
|
||||||
const token = useCookie('sessionToken')
|
const token = useCookie('sessionToken')
|
||||||
token.value = user.token
|
token.value = user.token
|
||||||
|
|
||||||
useGlobalStore().setUser(user)
|
useGlobalStore().setUser(user.user)
|
||||||
|
|
||||||
navigateTo('/channel/@me')
|
navigateTo('/channel/@me')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
|
import { NuxtLink } from '~/.nuxt/components';
|
||||||
import { useGlobalStore } from '~/stores/store'
|
import { useGlobalStore } from '~/stores/store'
|
||||||
|
import { IUser } from '~/types';
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: 'clean'
|
layout: 'clean'
|
||||||
@@ -53,14 +55,14 @@ export default {
|
|||||||
email: this.email,
|
email: this.email,
|
||||||
password: this.password
|
password: this.password
|
||||||
}
|
}
|
||||||
})
|
}) as { userId: string; token: string; user: IUser; }
|
||||||
|
|
||||||
const userId = useCookie('userId')
|
const userId = useCookie('userId')
|
||||||
userId.value = user.userId
|
userId.value = user.userId
|
||||||
const token = useCookie('sessionToken')
|
const token = useCookie('sessionToken')
|
||||||
token.value = user.token
|
token.value = user.token
|
||||||
|
|
||||||
useGlobalStore().setUser(user)
|
useGlobalStore().setUser(user.user)
|
||||||
|
|
||||||
navigateTo('/channel/@me')
|
navigateTo('/channel/@me')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { IChannel, IServer, IUser } from '../../../../types'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
messages: true,
|
messages: true,
|
||||||
dmParticipants: true
|
dmParticipants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IChannel
|
||||||
|
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
event.node.res.statusCode = 404;
|
event.node.res.statusCode = 404;
|
||||||
@@ -40,9 +41,9 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
participants: true
|
participants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IServer
|
||||||
|
|
||||||
const userInServer = server.participants.filter((e) => e.id === event.context.user.id)
|
const userInServer: Array<IUser> = server.participants.filter((e: IUser) => e.id === event.context.user.id)
|
||||||
|
|
||||||
if (!userInServer) {
|
if (!userInServer) {
|
||||||
event.node.res.statusCode = 401;
|
event.node.res.statusCode = 401;
|
||||||
@@ -52,7 +53,5 @@ export default defineEventHandler(async (event) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return channel
|
||||||
channel
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { IServer } from '~/types'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
where: {
|
where: {
|
||||||
name: serverName
|
name: serverName
|
||||||
}
|
}
|
||||||
})
|
}) as IServer
|
||||||
|
|
||||||
if (preExistingServer) {
|
if (preExistingServer) {
|
||||||
event.node.res.statusCode = 409;
|
event.node.res.statusCode = 409;
|
||||||
@@ -47,9 +48,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
channels: true,
|
channels: true,
|
||||||
participants: true
|
participants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IServer
|
||||||
|
|
||||||
return {
|
return server
|
||||||
server
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { IChannel, IUser } from '~/types'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
@@ -22,13 +23,13 @@ export default defineEventHandler(async (event) => {
|
|||||||
where: {
|
where: {
|
||||||
id: partnerId
|
id: partnerId
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
const user = await prisma.user.findFirst({
|
const user = await prisma.user.findFirst({
|
||||||
where: {
|
where: {
|
||||||
id: event.context.user.id
|
id: event.context.user.id
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
if (!partner) {
|
if (!partner) {
|
||||||
event.node.res.statusCode = 400;
|
event.node.res.statusCode = 400;
|
||||||
@@ -42,7 +43,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
name: `${user.id}-${partner.id}`,
|
name: `${user.id}-${partner.id}`,
|
||||||
DM: true
|
DM: true
|
||||||
}
|
}
|
||||||
})
|
}) as IChannel
|
||||||
|
|
||||||
if (preExistingServer) {
|
if (preExistingServer) {
|
||||||
event.node.res.statusCode = 409;
|
event.node.res.statusCode = 409;
|
||||||
@@ -60,9 +61,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
dmParticipants: true
|
dmParticipants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IChannel
|
||||||
|
|
||||||
return {
|
return server
|
||||||
server
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
|
import { IChannel, IServer, IUser, IMessage } from '~/types'
|
||||||
|
import { Server } from 'socket.io'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
var io: Server | undefined
|
var io: Server
|
||||||
}
|
}
|
||||||
|
|
||||||
export default defineEventHandler(async (event) => {
|
export default defineEventHandler(async (event) => {
|
||||||
@@ -29,7 +31,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
dmParticipants: true
|
dmParticipants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IChannel
|
||||||
|
|
||||||
if (!channel.DM) {
|
if (!channel.DM) {
|
||||||
const server = await prisma.server.findFirst({
|
const server = await prisma.server.findFirst({
|
||||||
@@ -39,11 +41,11 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
participants: true
|
participants: true
|
||||||
}
|
}
|
||||||
})
|
}) as IServer
|
||||||
|
|
||||||
const userInServer = server.participants.filter((e) => e.id === event.context.user.id)
|
const userInServer: Array<IUser> = server.participants.filter((e) => e.id === event.context.user.id)
|
||||||
|
|
||||||
if (!userInServer.length > 0) {
|
if (userInServer.length > 0) {
|
||||||
event.node.res.statusCode = 401;
|
event.node.res.statusCode = 401;
|
||||||
return {
|
return {
|
||||||
message: 'You must be in the server to send a message.'
|
message: 'You must be in the server to send a message.'
|
||||||
@@ -57,9 +59,9 @@ export default defineEventHandler(async (event) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const userInDM = channel.dmParticipants.filter((e) => e.id === event.context.user.id)
|
const userInDM: Array<IUser> | undefined = channel.dmParticipants?.filter((e) => e.id === event.context.user.id)
|
||||||
|
|
||||||
if (!userInDM.length > 0) {
|
if (!userInDM || userInDM.length > 0) {
|
||||||
event.node.res.statusCode = 401;
|
event.node.res.statusCode = 401;
|
||||||
return {
|
return {
|
||||||
message: 'You must be in the DM to send a message.'
|
message: 'You must be in the DM to send a message.'
|
||||||
@@ -84,7 +86,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
creator: true
|
creator: true
|
||||||
}
|
}
|
||||||
})
|
}) as IMessage
|
||||||
|
|
||||||
global.io.emit(`message-${channel.id}`, { message });
|
global.io.emit(`message-${channel.id}`, { message });
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
|
import { IUser } from '../../types'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
export default defineEventHandler(async (event) => {
|
export default defineEventHandler(async (event) => {
|
||||||
@@ -45,7 +46,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
user.passwordhash = undefined;
|
user.passwordhash = undefined;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { IServer } from '~/types'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
participants: true,
|
participants: true,
|
||||||
channels: true
|
channels: true
|
||||||
}
|
}
|
||||||
})
|
}) as IServer
|
||||||
|
|
||||||
if (!server) {
|
if (!server) {
|
||||||
event.node.res.statusCode = 404;
|
event.node.res.statusCode = 404;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import bcryptjs from "bcryptjs";
|
import bcryptjs from "bcryptjs";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
|
import { IUser } from "../../types";
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
export default defineEventHandler(async (event) => {
|
export default defineEventHandler(async (event) => {
|
||||||
@@ -17,7 +18,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
where: {
|
where: {
|
||||||
username: body.username
|
username: body.username
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
const isCorrect = await bcryptjs.compare(body.password, user.passwordhash)
|
const isCorrect = await bcryptjs.compare(body.password, user.passwordhash)
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
token,
|
token,
|
||||||
userId: user.id
|
userId: user.id,
|
||||||
|
user
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import bcryptjs from "bcryptjs";
|
import bcryptjs from "bcryptjs";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
|
import { IUser } from "../../types";
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
export default defineEventHandler(async (event) => {
|
export default defineEventHandler(async (event) => {
|
||||||
@@ -24,7 +25,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
if (preExistingUser) {
|
if (preExistingUser) {
|
||||||
event.node.res.statusCode = 409;
|
event.node.res.statusCode = 409;
|
||||||
@@ -41,7 +42,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
passwordhash,
|
passwordhash,
|
||||||
email: body.email
|
email: body.email
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
const token = uuidv4()
|
const token = uuidv4()
|
||||||
|
|
||||||
@@ -54,6 +55,7 @@ export default defineEventHandler(async (event) => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
token,
|
token,
|
||||||
userId: user.id
|
userId: user.id,
|
||||||
|
user
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { IUser } from '~/types'
|
||||||
import { PrismaClient } from '@prisma/client'
|
import { PrismaClient } from '@prisma/client'
|
||||||
const prisma = new PrismaClient()
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
@@ -16,9 +17,9 @@ export default defineEventHandler(async (event) => {
|
|||||||
include: {
|
include: {
|
||||||
channels: true
|
channels: true
|
||||||
}
|
}
|
||||||
})
|
}) as IUser
|
||||||
|
|
||||||
user.passwordhash = undefined;
|
servers.passwordhash = undefined;
|
||||||
|
|
||||||
return user
|
return servers
|
||||||
})
|
})
|
||||||
@@ -1,21 +1,23 @@
|
|||||||
|
import { IUser, IServer, IChannel } from "../types";
|
||||||
|
|
||||||
export const useGlobalStore = defineStore('global', {
|
export const useGlobalStore = defineStore('global', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
activeServer: {},
|
activeServer: {} as IServer | Record<string, unknown>,
|
||||||
user: {}
|
user: {} as IUser
|
||||||
}),
|
}),
|
||||||
actions: {
|
actions: {
|
||||||
setUser(user) {
|
setUser(user: IUser) {
|
||||||
this.user = user;
|
this.user = user;
|
||||||
},
|
},
|
||||||
addServer(server) {
|
addServer(server: IServer) {
|
||||||
if (this.user.servers.find((e) => e.id === server.id)) return;
|
if (this.user.servers.find((e) => e.id === server.id)) return;
|
||||||
this.user.servers.push(server)
|
this.user.servers.push(server)
|
||||||
},
|
},
|
||||||
addDM(dmChannel) {
|
addDM(dmChannel: IChannel) {
|
||||||
if (this.user.channels.includes(dmChannel)) return;
|
if (this.user.channels.includes(dmChannel)) return;
|
||||||
this.user.channels.push(dmChannel)
|
this.user.channels.push(dmChannel)
|
||||||
},
|
},
|
||||||
setActive(type, serverId) {
|
setActive(type: string, serverId: string) {
|
||||||
if (serverId === '@me') {
|
if (serverId === '@me') {
|
||||||
this.activeServer = {}
|
this.activeServer = {}
|
||||||
return;
|
return;
|
||||||
@@ -23,7 +25,10 @@ export const useGlobalStore = defineStore('global', {
|
|||||||
|
|
||||||
type = (type === 'dm') ? 'channels' : 'servers'
|
type = (type === 'dm') ? 'channels' : 'servers'
|
||||||
|
|
||||||
this.activeServer = this["user"][type].find((e) => e.id === serverId)
|
if (type !== 'channels' && type !== 'servers') return;
|
||||||
|
|
||||||
|
const searchableArray: IChannel[] | IServer[] = this["user"][type]
|
||||||
|
this.activeServer = searchableArray.find((e: IServer | IChannel) => e.id === serverId)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -25,15 +25,6 @@
|
|||||||
"./*"
|
"./*"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"types": [
|
|
||||||
"@nuxt/types",
|
|
||||||
"@types/node"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"exclude": [
|
|
||||||
"node_modules",
|
|
||||||
".nuxt",
|
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"extends": "./.nuxt/tsconfig.json"
|
"extends": "./.nuxt/tsconfig.json"
|
||||||
}
|
}
|
||||||
|
|||||||
1
tsconfig.tsbuildinfo
Normal file
1
tsconfig.tsbuildinfo
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":"4.7.4"}
|
||||||
@@ -1,4 +1,35 @@
|
|||||||
export interface IUser {
|
export interface IUser {
|
||||||
id: string;
|
id: string;
|
||||||
|
email: string;
|
||||||
username: string;
|
username: string;
|
||||||
|
passwordhash: string | undefined;
|
||||||
|
servers: Array<IServer>;
|
||||||
|
serverId?: string;
|
||||||
|
channels: Array<IChannel>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IServer {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
channels: Array<IChannel>;
|
||||||
|
participants: Array<IUser>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IChannel {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
server?: IServer;
|
||||||
|
messages: Array<unknown>
|
||||||
|
DM?: boolean;
|
||||||
|
dmParticipants?: Array<IUser>;
|
||||||
|
serverId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IMessage {
|
||||||
|
id: string;
|
||||||
|
body: string;
|
||||||
|
creator: IUser;
|
||||||
|
channel: IChannel;
|
||||||
|
userId: string;
|
||||||
|
channelId: string;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user