Fix useSessionSWR() expecting Drift's API interface instead of next-auths

This commit is contained in:
Max Leiter 2023-02-26 18:41:02 -08:00
parent a54a22f142
commit 3041da80e2
11 changed files with 97 additions and 111 deletions

View file

@ -14,7 +14,7 @@
}, },
"dependencies": { "dependencies": {
"@next-auth/prisma-adapter": "^1.0.5", "@next-auth/prisma-adapter": "^1.0.5",
"@next/eslint-plugin-next": "13.2.2-canary.0", "@next/eslint-plugin-next": "13.2.2-canary.1",
"@prisma/client": "^4.10.1", "@prisma/client": "^4.10.1",
"@radix-ui/react-dialog": "^1.0.2", "@radix-ui/react-dialog": "^1.0.2",
"@radix-ui/react-dropdown-menu": "^2.0.3", "@radix-ui/react-dropdown-menu": "^2.0.3",
@ -27,7 +27,7 @@
"cmdk": "^0.1.22", "cmdk": "^0.1.22",
"jest": "^29.4.3", "jest": "^29.4.3",
"lodash.debounce": "^4.0.8", "lodash.debounce": "^4.0.8",
"next": "13.2.2-canary.0", "next": "13.2.2-canary.1",
"next-auth": "^4.19.2", "next-auth": "^4.19.2",
"next-themes": "^0.2.1", "next-themes": "^0.2.1",
"react": "18.2.0", "react": "18.2.0",

View file

@ -3,7 +3,7 @@ lockfileVersion: 5.4
specifiers: specifiers:
'@next-auth/prisma-adapter': ^1.0.5 '@next-auth/prisma-adapter': ^1.0.5
'@next/bundle-analyzer': 13.1.7-canary.26 '@next/bundle-analyzer': 13.1.7-canary.26
'@next/eslint-plugin-next': 13.2.2-canary.0 '@next/eslint-plugin-next': 13.2.2-canary.1
'@prisma/client': ^4.10.1 '@prisma/client': ^4.10.1
'@radix-ui/react-dialog': ^1.0.2 '@radix-ui/react-dialog': ^1.0.2
'@radix-ui/react-dropdown-menu': ^2.0.3 '@radix-ui/react-dropdown-menu': ^2.0.3
@ -36,7 +36,7 @@ specifiers:
jest: ^29.4.3 jest: ^29.4.3
jest-mock-extended: ^3.0.2 jest-mock-extended: ^3.0.2
lodash.debounce: ^4.0.8 lodash.debounce: ^4.0.8
next: 13.2.2-canary.0 next: 13.2.2-canary.1
next-auth: ^4.19.2 next-auth: ^4.19.2
next-themes: ^0.2.1 next-themes: ^0.2.1
next-unused: 0.0.6 next-unused: 0.0.6
@ -65,7 +65,7 @@ specifiers:
dependencies: dependencies:
'@next-auth/prisma-adapter': 1.0.5_qpmskah7lm3ildf4stmwh4q42u '@next-auth/prisma-adapter': 1.0.5_qpmskah7lm3ildf4stmwh4q42u
'@next/eslint-plugin-next': 13.2.2-canary.0 '@next/eslint-plugin-next': 13.2.2-canary.1
'@prisma/client': 4.10.1_prisma@4.10.1 '@prisma/client': 4.10.1_prisma@4.10.1
'@radix-ui/react-dialog': 1.0.2_5ndqzdd6t4rivxsukjv3i3ak2q '@radix-ui/react-dialog': 1.0.2_5ndqzdd6t4rivxsukjv3i3ak2q
'@radix-ui/react-dropdown-menu': 2.0.3_5ndqzdd6t4rivxsukjv3i3ak2q '@radix-ui/react-dropdown-menu': 2.0.3_5ndqzdd6t4rivxsukjv3i3ak2q
@ -78,9 +78,9 @@ dependencies:
cmdk: 0.1.22_5ndqzdd6t4rivxsukjv3i3ak2q cmdk: 0.1.22_5ndqzdd6t4rivxsukjv3i3ak2q
jest: 29.4.3_@types+node@18.11.18 jest: 29.4.3_@types+node@18.11.18
lodash.debounce: 4.0.8 lodash.debounce: 4.0.8
next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y
next-auth: 4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia next-auth: 4.19.2_qqyqr3kxb6ily2ps46epmolks4
next-themes: 0.2.1_kc5cm3uhxzg4ew7l4d27zpo4ia next-themes: 0.2.1_qqyqr3kxb6ily2ps46epmolks4
react: 18.2.0 react: 18.2.0
react-datepicker: 4.8.0_biqbaboplfbrettd7655fr4n2y react-datepicker: 4.8.0_biqbaboplfbrettd7655fr4n2y
react-dom: 18.2.0_react@18.2.0 react-dom: 18.2.0_react@18.2.0
@ -1017,7 +1017,7 @@ packages:
next-auth: ^4 next-auth: ^4
dependencies: dependencies:
'@prisma/client': 4.10.1_prisma@4.10.1 '@prisma/client': 4.10.1_prisma@4.10.1
next-auth: 4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia next-auth: 4.19.2_qqyqr3kxb6ily2ps46epmolks4
dev: false dev: false
/@next/bundle-analyzer/13.1.7-canary.26: /@next/bundle-analyzer/13.1.7-canary.26:
@ -1029,8 +1029,8 @@ packages:
- utf-8-validate - utf-8-validate
dev: true dev: true
/@next/env/13.2.2-canary.0: /@next/env/13.2.2-canary.1:
resolution: {integrity: sha512-EDy4UF4oXGmWgMq9w8P7Wg7JoYbrGY7EVnZcNoyMDU8o9KeiviYjK2IR3yFBulG0/1I2UbVu2wIM1xPYsQIonQ==} resolution: {integrity: sha512-UvubCoM6cVfpndCRNBqXlo3J3Qyt4Vsi/1oNfLxoxHrw3L8xt3SkykmBTi/D1VkjGiPzNuan8aPZa7gL0RS5QA==}
dev: false dev: false
/@next/eslint-plugin-next/13.1.7-canary.26: /@next/eslint-plugin-next/13.1.7-canary.26:
@ -1039,14 +1039,14 @@ packages:
glob: 7.1.7 glob: 7.1.7
dev: true dev: true
/@next/eslint-plugin-next/13.2.2-canary.0: /@next/eslint-plugin-next/13.2.2-canary.1:
resolution: {integrity: sha512-XBeBfEqB/XMyGHyYGG+S+KDA0xlcs+DtXgcfohJXUTD+Hiwjk4Zn4pCuopDGHlO49td5/xdCKznE0LhSDcqhoA==} resolution: {integrity: sha512-Db1iv0NtoyfwDu5RBC/Or3DyxujJx2l8dQFvLzqPkBJ+jOEexuOyM5zcXDVCo4iCr3Yd0acqUmGki9hJ391Y6w==}
dependencies: dependencies:
glob: 7.1.7 glob: 7.1.7
dev: false dev: false
/@next/swc-android-arm-eabi/13.2.2-canary.0: /@next/swc-android-arm-eabi/13.2.2-canary.1:
resolution: {integrity: sha512-/si1jk3wtrarhdVPQloSubTJjLeuTpgT7V2R2w+acWzvBBsrs2ThhZodLz0fJRKcYKmeDZebhtYGUkxkcm48Tw==} resolution: {integrity: sha512-QFjIgkr80fzwMuNOVxMxsKRIJmbjuGadyXpSpx9o0u3tIDiCfVkQK3ySjlmXd4X4cs6WIKlbTmMwu3zIa9TEIg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@ -1054,8 +1054,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-android-arm64/13.2.2-canary.0: /@next/swc-android-arm64/13.2.2-canary.1:
resolution: {integrity: sha512-MKImVjggMFvPJju48fvz/KqjiqXaKoimGz3Vmc3c12WaSIEa5O1sevw0dQKPI6sv+1Mf5MuP7XlLQ9bWJo+72Q==} resolution: {integrity: sha512-Q4q5Oiv6Lg1emJ1AChmyMn7r5Myfaqexx7d+Hy4cX755Ty3AhTpg/pjPM7krFgNVyViuQbP6JNg7sUM2YP2tBQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -1063,8 +1063,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-darwin-arm64/13.2.2-canary.0: /@next/swc-darwin-arm64/13.2.2-canary.1:
resolution: {integrity: sha512-Sj+hCut5c6K2lOIJpV9KDsDJNe1dVacAE8WWmvotoeu4ab1W0//axZOxksq0S3240oF9CJ8QPZo+q5lPV6Gn2Q==} resolution: {integrity: sha512-dDKGWM+WH6Rm4s9cHNBBLsdi0nt4+Tqe11U866IquAq0alQCbNYmqoff8tWfj8CGgOwPQ24RPnC6hVJMJ+6JnQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -1072,8 +1072,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-darwin-x64/13.2.2-canary.0: /@next/swc-darwin-x64/13.2.2-canary.1:
resolution: {integrity: sha512-/lv1J5ts5UhQ5V2V0PpIkQJw8kJywMgvPegZ/yf0fy9QOOdGCAw1dXtZsKUISrJmuzPcCZo0F56Zjbyb6lCLsw==} resolution: {integrity: sha512-nKQG/bB8ULeX1RH2zRnj2703nozlzAQrnPQ2DX3qKyD5kGFdKwQE/kS6ehRzFH3IJh1Aa/XH/j20xrFk01Ah2g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -1081,8 +1081,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-freebsd-x64/13.2.2-canary.0: /@next/swc-freebsd-x64/13.2.2-canary.1:
resolution: {integrity: sha512-ECQyYOYd1AKu/oTNeI5pWDXebgKTIWXCs84IN9rXsM7f+FOQmVU8V+gK6Oisw3jya68B1vmfMqLDGQClDDIMAg==} resolution: {integrity: sha512-1u765vpNLXmi8atsc5j/DafDDZtsLjYOYG+EhPPIG5mgT0tyPSf4oPLJYDOhek5aZH0lsIJP1TRLhcAJR3Jkdg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -1090,8 +1090,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm-gnueabihf/13.2.2-canary.0: /@next/swc-linux-arm-gnueabihf/13.2.2-canary.1:
resolution: {integrity: sha512-/UQf0yoIwJJhgV8dpDmgWq/Q3/IxqFRsUHfBiy2M6kGVYwB9CnsjZzHwUKmg7sASdv+atW+oc4PIXXN6W9CCgg==} resolution: {integrity: sha512-wTSxU91h5/bLzrDrIVc4nZ6yeL0ptdabJtDgYYgw64wJcoPPooA1u6bjyMnhfBK5bfpDf1TaFc4BEGW7ATvbLw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -1099,8 +1099,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-gnu/13.2.2-canary.0: /@next/swc-linux-arm64-gnu/13.2.2-canary.1:
resolution: {integrity: sha512-pv0m+4hnKyq0MwEVAvrJScoYme4GKoPieP0Tj32oRK6P1gafFK4uJxF6zMVPlO0D/tGI7EkoHZjv/7sU5pSYSA==} resolution: {integrity: sha512-MUgSpujYAytkZmQ3JmNfh0xYvw8Uq2Dk4RCp/FEcW836BLHoEqSOZbVH5XZ2ohA1eqD7NCxn9sFSlXrOf2KsGg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1108,8 +1108,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-musl/13.2.2-canary.0: /@next/swc-linux-arm64-musl/13.2.2-canary.1:
resolution: {integrity: sha512-Bpc7nLJoP6dVPG9lOqCGqWkfiMo143YRx7+cvxSl1FVupkGP7Ntldvl3zS/m2CnU/5egQEjC2C5jEgQRY92Zhw==} resolution: {integrity: sha512-bcm6JvU5rTkcTv/PwQSuxHkVFlHgWZeNqJkQswc37zgqnXxP0jRwrKTchu/Le483wk2ZSOD5pUvgnsH0+2b0pA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1117,8 +1117,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-gnu/13.2.2-canary.0: /@next/swc-linux-x64-gnu/13.2.2-canary.1:
resolution: {integrity: sha512-2RPr5AxawTUVaQGrkhWWpjVdExPiA8wEJL6E1itI2gNav8LU3FEsIr9juQURv47Xn2KE286fw8214D6+D0RExg==} resolution: {integrity: sha512-QZeqxoFq/+rDqQgj/W1EboPrTDmzoLO7WevPzbWwr1sFXz6gM1mGjBi+bnHkmJlrQ6sC7BINIf3GMkZUe42KXA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1126,8 +1126,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-musl/13.2.2-canary.0: /@next/swc-linux-x64-musl/13.2.2-canary.1:
resolution: {integrity: sha512-gKr5tJoJKGSlmDdpmoO1fe6oUeVMz2TluspKPM4ulc0rqyXjrRmQ9pd/oqEoypUKTUkqL49lt4hTL98MkhvXWg==} resolution: {integrity: sha512-kpI6TjncEGG1Kfhyd/7pPBi8au4NPgldl1/Bc+G0Fb5Gyg1GQ/oharzxHqhffYNpq1RVqkXXrNcfusx9moEGpg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1135,8 +1135,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-arm64-msvc/13.2.2-canary.0: /@next/swc-win32-arm64-msvc/13.2.2-canary.1:
resolution: {integrity: sha512-0N7+lcV8ycqzgJIye40+Vl0iUk/mu3919T2kfnt20WU7gP+rpRJkPfP44yxBdt7U7XYtnqldM2Ox969y+0qJVw==} resolution: {integrity: sha512-dGUTTBjhK66c0pjQx3AIwh3PhsHMmjIBsJ0C1YR+5rCZHXgY9S1x/Vm/K1ZDDGO268g6bcFKpO0/8rUAioHl6A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -1144,8 +1144,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-ia32-msvc/13.2.2-canary.0: /@next/swc-win32-ia32-msvc/13.2.2-canary.1:
resolution: {integrity: sha512-vqdsKfJcfvf37P7YcJeIaPP5E7iSR7yTaHwgBpvY6Q0tDRxPv0gr4nRXElBs/V1VcxMaSx9PyyiQkKYB6UzEhg==} resolution: {integrity: sha512-HxB3ac6DQushJZu2xVfz9KGh9Yzaml/Uzcu9JwqL3Tf8v3g6+Jj/jn520wOl+8k5x1TfL/nxMSmp2QGCjrTygQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -1153,8 +1153,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-x64-msvc/13.2.2-canary.0: /@next/swc-win32-x64-msvc/13.2.2-canary.1:
resolution: {integrity: sha512-Hf1XQaP/hpi9ddS128u8+npotRzX5EOt9y4nxzHRKn6BmjgAKY7CEBsFQMsjVHWqit2Jt3jXspgaCVIFOCE9Ng==} resolution: {integrity: sha512-BTJBjLdJL4Suyz392QKtkWBzIKiWCRI3AC2zTzYrzCqgyGS1wqRDUY0lHXOio7xx/U+dC10yaBaztcTYiWG6RA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -2525,10 +2525,6 @@ packages:
resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
dev: false dev: false
/caniuse-lite/1.0.30001449:
resolution: {integrity: sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==}
dev: false
/caniuse-lite/1.0.30001458: /caniuse-lite/1.0.30001458:
resolution: {integrity: sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==} resolution: {integrity: sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==}
@ -5747,7 +5743,7 @@ packages:
dev: true dev: true
optional: true optional: true
/next-auth/4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia: /next-auth/4.19.2_qqyqr3kxb6ily2ps46epmolks4:
resolution: {integrity: sha512-6V2YG3IJQVhgCAH7mvT3yopTW92gMdUrcwGX7NQ0dCreT/+axGua/JmVdarjec0C/oJukKpIYRgjMlV+L5ZQOQ==} resolution: {integrity: sha512-6V2YG3IJQVhgCAH7mvT3yopTW92gMdUrcwGX7NQ0dCreT/+axGua/JmVdarjec0C/oJukKpIYRgjMlV+L5ZQOQ==}
peerDependencies: peerDependencies:
next: ^12.2.5 || ^13 next: ^12.2.5 || ^13
@ -5762,7 +5758,7 @@ packages:
'@panva/hkdf': 1.0.2 '@panva/hkdf': 1.0.2
cookie: 0.5.0 cookie: 0.5.0
jose: 4.11.0 jose: 4.11.0
next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y
oauth: 0.9.15 oauth: 0.9.15
openid-client: 5.3.0 openid-client: 5.3.0
preact: 10.11.2 preact: 10.11.2
@ -5772,14 +5768,14 @@ packages:
uuid: 8.3.2 uuid: 8.3.2
dev: false dev: false
/next-themes/0.2.1_kc5cm3uhxzg4ew7l4d27zpo4ia: /next-themes/0.2.1_qqyqr3kxb6ily2ps46epmolks4:
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
peerDependencies: peerDependencies:
next: '*' next: '*'
react: '*' react: '*'
react-dom: '*' react-dom: '*'
dependencies: dependencies:
next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0_react@18.2.0 react-dom: 18.2.0_react@18.2.0
dev: false dev: false
@ -5795,8 +5791,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/next/13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y: /next/13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-sAzQCPI06df+TY7NI6txOkc7sOC7sErnOGF7vXA28GcQ0r4V09s4GDe8XTlPckxJ7o2Ky4OU1eN4NJ3vnDCcZQ==} resolution: {integrity: sha512-O/zMVYCLcEY8fC8AmhybhCBQgGV47MYpD3l+cz3fxVXAy1fKwJrpiL/coqLvG9v/NiOL0eu3xLexNf3Ogn6G9w==}
engines: {node: '>=14.6.0'} engines: {node: '>=14.6.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -5816,27 +5812,27 @@ packages:
sass: sass:
optional: true optional: true
dependencies: dependencies:
'@next/env': 13.2.2-canary.0 '@next/env': 13.2.2-canary.1
'@swc/helpers': 0.4.14 '@swc/helpers': 0.4.14
caniuse-lite: 1.0.30001449 caniuse-lite: 1.0.30001458
postcss: 8.4.14 postcss: 8.4.14
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0_react@18.2.0 react-dom: 18.2.0_react@18.2.0
styled-jsx: 5.1.1_react@18.2.0 styled-jsx: 5.1.1_react@18.2.0
optionalDependencies: optionalDependencies:
'@next/swc-android-arm-eabi': 13.2.2-canary.0 '@next/swc-android-arm-eabi': 13.2.2-canary.1
'@next/swc-android-arm64': 13.2.2-canary.0 '@next/swc-android-arm64': 13.2.2-canary.1
'@next/swc-darwin-arm64': 13.2.2-canary.0 '@next/swc-darwin-arm64': 13.2.2-canary.1
'@next/swc-darwin-x64': 13.2.2-canary.0 '@next/swc-darwin-x64': 13.2.2-canary.1
'@next/swc-freebsd-x64': 13.2.2-canary.0 '@next/swc-freebsd-x64': 13.2.2-canary.1
'@next/swc-linux-arm-gnueabihf': 13.2.2-canary.0 '@next/swc-linux-arm-gnueabihf': 13.2.2-canary.1
'@next/swc-linux-arm64-gnu': 13.2.2-canary.0 '@next/swc-linux-arm64-gnu': 13.2.2-canary.1
'@next/swc-linux-arm64-musl': 13.2.2-canary.0 '@next/swc-linux-arm64-musl': 13.2.2-canary.1
'@next/swc-linux-x64-gnu': 13.2.2-canary.0 '@next/swc-linux-x64-gnu': 13.2.2-canary.1
'@next/swc-linux-x64-musl': 13.2.2-canary.0 '@next/swc-linux-x64-musl': 13.2.2-canary.1
'@next/swc-win32-arm64-msvc': 13.2.2-canary.0 '@next/swc-win32-arm64-msvc': 13.2.2-canary.1
'@next/swc-win32-ia32-msvc': 13.2.2-canary.0 '@next/swc-win32-ia32-msvc': 13.2.2-canary.1
'@next/swc-win32-x64-msvc': 13.2.2-canary.0 '@next/swc-win32-x64-msvc': 13.2.2-canary.1
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
- babel-plugin-macros - babel-plugin-macros

View file

@ -16,7 +16,6 @@ import Button from "@components/button"
import Input from "@components/input" import Input from "@components/input"
import ButtonDropdown from "@components/button-dropdown" import ButtonDropdown from "@components/button-dropdown"
import { useToasts } from "@components/toasts" import { useToasts } from "@components/toasts"
import { useSessionSWR } from "@lib/use-session-swr"
import { fetchWithUser } from "src/app/lib/fetch-with-user" import { fetchWithUser } from "src/app/lib/fetch-with-user"
import dynamic from "next/dynamic" import dynamic from "next/dynamic"
@ -41,8 +40,6 @@ function Post({
initialPost?: PostWithFiles initialPost?: PostWithFiles
newPostParent?: string newPostParent?: string
}): JSX.Element { }): JSX.Element {
const { isAuthenticated } = useSessionSWR()
const { setToast } = useToasts() const { setToast } = useToasts()
const router = useRouter() const router = useRouter()
const [title, setTitle] = useState( const [title, setTitle] = useState(
@ -91,6 +88,7 @@ function Post({
if (res.ok) { if (res.ok) {
const json = (await res.json()) as { id: string } const json = (await res.json()) as { id: string }
router.push(`/post/${json.id}`) router.push(`/post/${json.id}`)
return
} else { } else {
const json = (await res.json()) as { error: string } const json = (await res.json()) as { error: string }
console.error(json) console.error(json)
@ -177,11 +175,6 @@ function Post({
[] []
) )
if (isAuthenticated === false) {
router.push("/signin")
return <></>
}
function onClosePasswordModal() { function onClosePasswordModal() {
setPasswordModalVisible(false) setPasswordModalVisible(false)
setSubmitting(false) setSubmitting(false)

View file

@ -6,8 +6,6 @@ export default function New() {
return <NewPost /> return <NewPost />
} }
export const dynamic = "force-static"
export const metadata = getMetadata({ export const metadata = getMetadata({
title: "New post", title: "New post",
hidden: true hidden: true

View file

@ -1,17 +1,17 @@
import { redirect } from "next/navigation"
import { getPostsByUser, serverPostToClientPost } from "@lib/server/prisma" import { getPostsByUser, serverPostToClientPost } from "@lib/server/prisma"
import PostList from "@components/post-list" import PostList from "@components/post-list"
import { getCurrentUser } from "@lib/server/session" import { getCurrentUser } from "@lib/server/session"
import { authOptions } from "@lib/server/auth"
import { Suspense } from "react" import { Suspense } from "react"
import ErrorBoundary from "@components/error/fallback" import ErrorBoundary from "@components/error/fallback"
import { getMetadata } from "src/app/lib/metadata" import { getMetadata } from "src/app/lib/metadata"
import { redirect } from "next/navigation"
export default async function Mine() { export default async function Mine() {
const userId = (await getCurrentUser())?.id const userId = (await getCurrentUser())?.id
if (!userId) { if (!userId) {
return redirect(authOptions.pages?.signIn || "/new") // should be handled by middleware
return redirect("/signup")
} }
const posts = (await getPostsByUser(userId, true)).map(serverPostToClientPost) const posts = (await getPostsByUser(userId, true)).map(serverPostToClientPost)

View file

@ -155,31 +155,30 @@ const Header = () => {
isAuthLoading ? ( isAuthLoading ? (
<NavButtonPlaceholder width={SIGN_IN_WIDTH} key="signin" /> <NavButtonPlaceholder width={SIGN_IN_WIDTH} key="signin" />
) : undefined, ) : undefined,
!isAuthLoading ? ( isAuthenticated === true ? (
isAuthenticated ? ( <FadeIn key="signout-fade">
<FadeIn key="signout-fade"> <NavButton
<NavButton name="Sign Out"
name="Sign Out" icon={<UserX />}
icon={<UserX />} value="signout"
value="signout" onClick={() => {
onClick={() => { signOut()
signOut() mutateSession(undefined)
mutateSession(undefined) }}
}} width={SIGN_IN_WIDTH}
width={SIGN_IN_WIDTH} />
/> </FadeIn>
</FadeIn> ) : undefined,
) : ( isAuthenticated === false ? (
<FadeIn key="signin-fade"> <FadeIn key="signin-fade">
<NavButton <NavButton
name="Sign In" name="Sign In"
icon={<User />} icon={<User />}
value="signin" value="signin"
href="/signin" href="/signin"
width={SIGN_IN_WIDTH} width={SIGN_IN_WIDTH}
/> />
</FadeIn> </FadeIn>
)
) : undefined, ) : undefined,
isAdmin ? ( isAdmin ? (
<FadeIn> <FadeIn>

View file

@ -8,6 +8,8 @@ export function isAllowedVisibilityForWebpage(
return ALLOWED_VISIBILITIES_FOR_WEBPAGE.includes(visibility) return ALLOWED_VISIBILITIES_FOR_WEBPAGE.includes(visibility)
} }
export const SIGNED_IN_COOKIE = "next-auth.session-token"
// Code files for uploading with drag and drop and syntax highlighting // Code files for uploading with drag and drop and syntax highlighting
export const allowedFileTypes = [ export const allowedFileTypes = [
"application/json", "application/json",

View file

@ -243,7 +243,6 @@ export const createUser = async (
config.registration_password && config.registration_password &&
serverPassword !== config.registration_password serverPassword !== config.registration_password
) { ) {
console.log("Registration password mismatch")
throw new Error("Wrong registration password") throw new Error("Wrong registration password")
} }

View file

@ -8,7 +8,9 @@ export function useSessionSWR() {
isLoading, isLoading,
isValidating, isValidating,
mutate mutate
} = useSWR<Session>("/api/auth/session") } = useSWR<Session>("/api/auth/session", {
fetcher: (url) => fetch(url).then((res) => res.json()) as Promise<Session>
})
return { return {
session, session,

View file

@ -6,20 +6,20 @@ export default withAuth(
async function middleware(req) { async function middleware(req) {
const token = await getToken({ req }) const token = await getToken({ req })
const isAuth = !!token const isAuthed = !!token
const isAuthPage = const isAuthPage =
req.nextUrl.pathname.startsWith("/signup") || req.nextUrl.pathname.startsWith("/signup") ||
req.nextUrl.pathname.startsWith("/signin") req.nextUrl.pathname.startsWith("/signin")
if (isAuthPage) { if (isAuthPage) {
if (isAuth) { if (isAuthed) {
return NextResponse.redirect(new URL("/new", req.url)) return NextResponse.redirect(new URL("/new", req.url))
} }
return null return null
} }
if (!isAuth) { if (!isAuthed) {
return NextResponse.redirect(new URL("/signin", req.url)) return NextResponse.redirect(new URL("/signin", req.url))
} }
}, },
@ -42,5 +42,6 @@ export const config = {
"/signin", "/signin",
"/signup", "/signup",
"/new", "/new",
"/mine",
] ]
} }

View file

@ -8,15 +8,12 @@ import { getHtmlFromFile } from "@lib/server/get-html-from-drift-file"
import { verifyApiUser } from "@lib/server/verify-api-user" import { verifyApiUser } from "@lib/server/verify-api-user"
async function handlePost(req: NextApiRequest, res: NextApiResponse<unknown>) { async function handlePost(req: NextApiRequest, res: NextApiResponse<unknown>) {
console.log("Handling post request")
try { try {
const userId = await verifyApiUser(req, res) const userId = await verifyApiUser(req, res)
if (!userId) { if (!userId) {
return res.status(401).json({ error: "Unauthorized" }) return res.status(401).json({ error: "Unauthorized" })
} }
console.log("User is authenticated")
const files = req.body.files as (Omit<ServerFile, "content" | "html"> & { const files = req.body.files as (Omit<ServerFile, "content" | "html"> & {
content: string content: string
html: string html: string
@ -26,7 +23,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse<unknown>) {
if (missingTitles.length > 0) { if (missingTitles.length > 0) {
throw new Error("All files must have a title") throw new Error("All files must have a title")
} }
console.log("All files have titles")
if (files.length === 0) { if (files.length === 0) {
throw new Error("You must submit at lea st one file") throw new Error("You must submit at lea st one file")