Skip to content

Commit b90aa3f

Browse files
committed
Merge branch 'main' into render-on-yaml
2 parents 19eafe2 + 18bf215 commit b90aa3f

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

server/prisma/sql/recommend.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ AS overlap FROM "User" recv
88
WHERE recv.id <> $1
99

1010
AND NOT EXISTS (
11-
SELECT * FROM "Relationship" rel
11+
SELECT 1 FROM "Relationship" rel
1212
WHERE rel."sendingUserId" IN ($1, recv.id) AND rel."receivingUserId" IN ($1, recv.id)
13-
AND status = 'MATCHED'
13+
AND (status = 'MATCHED' OR status = 'REJECTED')
1414
)
1515

1616
AND NOT EXISTS (
17-
SELECT * FROM "Relationship" rel_pd
17+
SELECT 1 FROM "Relationship" rel_pd
1818
WHERE rel_pd."sendingUserId" = $1 AND rel_pd."receivingUserId" = recv.id
1919
AND status = 'PENDING'
2020
)

web/src/firebase/auth/lib.ts

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
import { getAuth, onAuthStateChanged } from "firebase/auth";
22
import type { User } from "firebase/auth";
33
import type { IDToken } from "../../common/types";
4+
import { app } from "../config";
45

56
export class ErrUnauthorized extends Error {}
67

7-
export async function getIdToken(): Promise<IDToken> {
8-
const auth = getAuth();
9-
const user = await new Promise<User>((resolve) => {
10-
const unsubscribe = onAuthStateChanged(auth, (user: User | null) => {
11-
if (user != null) {
12-
resolve(user);
13-
unsubscribe();
14-
} else {
15-
console.error("getIdToken: user is null");
16-
}
17-
});
18-
});
19-
20-
if (user == null) {
21-
throw new Error(
22-
"Client Error: firebase/auth/lib.ts: current user not found",
23-
);
8+
let user: User;
9+
let token: string;
10+
11+
const auth = getAuth(app);
12+
onAuthStateChanged(auth, async (u: User | null) => {
13+
if (u != null) {
14+
user = u;
15+
token = await user.getIdToken();
2416
}
17+
});
18+
19+
async function refreshToken() {
20+
token = await user.getIdToken(true);
21+
}
2522

26-
return await user.getIdToken(true);
23+
export async function getIdToken(): Promise<IDToken> {
24+
if (token) return token;
25+
await refreshToken();
26+
return token;
2727
}
2828

2929
type RequestMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
@@ -48,9 +48,11 @@ export async function credFetch(
4848
};
4949
}
5050

51-
const res = await fetch(`${path}?token=${idToken}`, init);
51+
let res = await fetch(`${path}?token=${idToken}`, init);
52+
if (res.status === 401) {
53+
await refreshToken();
54+
res = await fetch(`${path}?token=${idToken}`);
55+
}
5256

53-
// if (res.status === 401) throw new ErrUnauthorized();
54-
// if (!res.ok) throw new Error("response was not ok");
5557
return res;
5658
}

0 commit comments

Comments
 (0)