Skip to content

Commit 81d9ad2

Browse files
committed
fix blank screen and 404 on refresh
1 parent 8572d2c commit 81d9ad2

File tree

76 files changed

+266
-155
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+266
-155
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ jobs:
195195
with:
196196
branch: gh-pages
197197
folder: web/dist
198+
clean: true
199+
clean-exclude: |
200+
404.html
198201
199202
release:
200203
needs: [deploy]

electron/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "electron",
33
"description": "All-in-one chat and forums for communities.",
4-
"version": "0.0.57",
4+
"version": "0.0.58",
55
"private": true,
66
"repository": "github:joincomet/comet",
77
"homepage": "https://joincomet.app",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "comet",
3-
"version": "0.0.57",
3+
"version": "0.0.58",
44
"private": true,
55
"license": "MPL-2.0",
66
"author": {

schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,7 @@ type User implements BaseEntity {
902902
isOnline: Boolean!
903903
isPremium: Boolean!
904904
lastLoginAt: DateTime
905+
lastMessageAt: DateTime
905906
name: String!
906907
onlineStatus: OnlineStatus!
907908
relatedUsers: [User!]!

server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "server",
3-
"version": "0.0.57",
3+
"version": "0.0.58",
44
"private": true,
55
"engines": {
66
"node": "15.x.x"
@@ -70,7 +70,7 @@
7070
"@types/express": "^4.17.11",
7171
"@types/faker": "^5.5.5",
7272
"@types/graphql-upload": "^8.0.4",
73-
"@types/ioredis": "^4.26.2",
73+
"@types/ioredis": "^4.26.3",
7474
"@types/jsonwebtoken": "^8.5.1",
7575
"@types/mime": "^2.0.3",
7676
"@types/sanitize-html": "^2.3.1",

server/src/entity/user/User.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Authorized, Field, Int, ObjectType } from 'type-graphql'
1+
import { Authorized, Field, ObjectType } from 'type-graphql'
22
import {
33
Collection,
44
Entity,
@@ -14,7 +14,6 @@ import {
1414
Channel,
1515
ChannelPermission,
1616
ChannelPermissionFallbacks,
17-
ChannelPermissions,
1817
Folder,
1918
FolderVisibility,
2019
Group,
@@ -53,13 +52,15 @@ export class User extends BaseEntity {
5352
@Authorized('USER')
5453
@Field(() => GraphQLEmailAddress)
5554
@Property({ columnType: 'text' })
56-
// @Unique()
5755
email: string
5856

5957
@Field({ nullable: true })
6058
@Property({ nullable: true })
6159
lastLoginAt?: Date
6260

61+
@Field({ nullable: true })
62+
lastMessageAt?: Date
63+
6364
@Field({ nullable: true })
6465
@Property({ nullable: true, columnType: 'text' })
6566
avatarUrl?: string

server/src/resolver/user/UserResolver.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,14 @@ export class UserResolver {
8282
return userUnreadCountLoader.load(user.id)
8383
}
8484

85+
@FieldResolver(() => Date, { nullable: true })
86+
async lastMessageAt(
87+
@Ctx() { loaders: { userLastMessageAtLoader } }: Context,
88+
@Root() user: User
89+
): Promise<Date> {
90+
return userLastMessageAtLoader.load(user.id)
91+
}
92+
8593
@FieldResolver(() => Boolean)
8694
async showChat(
8795
@Ctx() { loaders: { userShowChatLoader } }: Context,

server/src/types/Context.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export interface Loaders {
5252
userServersLoader: DataLoader<string, Server[]>
5353
userUnreadCountLoader: DataLoader<string, number>
5454
userShowChatLoader: DataLoader<string, boolean>
55+
userLastMessageAtLoader: DataLoader<string, Date>
5556

5657
folderFollowingLoader: DataLoader<string, boolean>
5758
folderOwnerLoader: DataLoader<string, User>

server/src/util/loaders/createLoaders.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
} from '@/util/loaders/folder'
3030
import { Loaders } from '@/types'
3131
import { userShowChatLoader } from '@/util/loaders/user'
32+
import { userLastMessageAtLoader } from '@/util/loaders/user/UserLastMessageAtLoader'
3233

3334
export function createLoaders(em: EntityManager, userId: string): Loaders {
3435
return {
@@ -64,6 +65,7 @@ export function createLoaders(em: EntityManager, userId: string): Loaders {
6465
userServersLoader: userServersLoader(em, userId),
6566
userUnreadCountLoader: userUnreadCountLoader(em, userId),
6667
userShowChatLoader: userShowChatLoader(em, userId),
68+
userLastMessageAtLoader: userLastMessageAtLoader(em, userId),
6769

6870
folderFollowingLoader: folderFollowingLoader(em, userId),
6971
folderOwnerLoader: folderOwnerLoader(em),
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import DataLoader from 'dataloader'
2+
import { Relationship, User } from '@/entity'
3+
import { EntityManager } from '@mikro-orm/postgresql'
4+
5+
export const userLastMessageAtLoader = (
6+
em: EntityManager,
7+
currentUserId: string
8+
) => {
9+
return new DataLoader<string, Date>(async (userIds: string[]) => {
10+
const relationships = await em.find(Relationship, {
11+
owner: currentUserId,
12+
user: userIds
13+
})
14+
const map: Record<string, Date> = {}
15+
userIds.forEach(
16+
userId =>
17+
(map[userId] = relationships.find(
18+
rel => rel.user === em.getReference(User, userId)
19+
)?.lastMessageAt)
20+
)
21+
return userIds.map(userId => map[userId])
22+
})
23+
}

0 commit comments

Comments
 (0)