atproto explorer pdsls.dev
atproto tool

update new oauth flow

juli.ee ffcfbace 709ca73d

verified
Changed files
+88 -97
src
components
utils
+4 -4
package.json
···
"serve": "vite preview"
},
"devDependencies": {
-
"@iconify-json/lucide": "^1.2.70",
+
"@iconify-json/lucide": "^1.2.71",
"@iconify/tailwind4": "^1.0.6",
"@tailwindcss/vite": "^4.1.16",
"prettier": "^3.6.2",
···
"@atcute/identity": "^1.1.1",
"@atcute/identity-resolver": "^1.1.4",
"@atcute/leaflet": "^1.0.11",
-
"@atcute/lexicon-doc": "^1.1.3",
+
"@atcute/lexicon-doc": "^1.1.4",
"@atcute/lexicon-resolver": "^0.1.3",
"@atcute/lexicons": "^1.2.2",
-
"@atcute/oauth-browser-client": "^1.0.27",
+
"@atcute/oauth-browser-client": "^2.0.1",
"@atcute/repo": "^0.1.0",
"@atcute/tangled": "^1.0.10",
"@atcute/tid": "^1.0.3",
···
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.3",
"codemirror": "^6.0.2",
-
"solid-js": "^1.9.9"
+
"solid-js": "^1.9.10"
},
"packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a"
}
+67 -72
pnpm-lock.yaml
···
specifier: ^1.0.11
version: 1.0.11
'@atcute/lexicon-doc':
-
specifier: ^1.1.3
-
version: 1.1.3
+
specifier: ^1.1.4
+
version: 1.1.4
'@atcute/lexicon-resolver':
specifier: ^0.1.3
version: 0.1.3(@atcute/identity-resolver@1.1.4(@atcute/identity@1.1.1))(@atcute/identity@1.1.1)
···
specifier: ^1.2.2
version: 1.2.2
'@atcute/oauth-browser-client':
-
specifier: ^1.0.27
-
version: 1.0.27
+
specifier: ^2.0.1
+
version: 2.0.1
'@atcute/repo':
specifier: ^0.1.0
version: 0.1.0
···
version: 6.38.6
'@fsegurai/codemirror-theme-basic-dark':
specifier: ^6.2.2
-
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)
+
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)
'@fsegurai/codemirror-theme-basic-light':
specifier: ^6.2.2
-
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)
+
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)
'@mary/exif-rm':
specifier: jsr:^0.2.2
version: '@jsr/mary__exif-rm@0.2.2'
···
version: 0.5.2
'@solidjs/meta':
specifier: ^0.29.4
-
version: 0.29.4(solid-js@1.9.9)
+
version: 0.29.4(solid-js@1.9.10)
'@solidjs/router':
specifier: ^0.15.3
-
version: 0.15.3(solid-js@1.9.9)
+
version: 0.15.3(solid-js@1.9.10)
codemirror:
specifier: ^6.0.2
version: 6.0.2
solid-js:
-
specifier: ^1.9.9
-
version: 1.9.9
+
specifier: ^1.9.10
+
version: 1.9.10
devDependencies:
'@iconify-json/lucide':
-
specifier: ^1.2.70
-
version: 1.2.70
+
specifier: ^1.2.71
+
version: 1.2.71
'@iconify/tailwind4':
specifier: ^1.0.6
version: 1.0.6(tailwindcss@4.1.16)
···
version: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
vite-plugin-solid:
specifier: ^2.11.10
-
version: 2.11.10(solid-js@1.9.9)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
+
version: 2.11.10(solid-js@1.9.10)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
packages:
···
'@atcute/leaflet@1.0.11':
resolution: {integrity: sha512-PmhBIltPD4DqR737J412ePwtfyBeC/Xr9R+s/d55Aq0kLPo4aBWt+JDb40Mh4JCGGxiz6gu9HFCCZeaVLrL4Dw==}
-
'@atcute/lexicon-doc@1.1.3':
-
resolution: {integrity: sha512-HlQBmB4NCZPzREyVzr7lzjRxSiRHook2xfa7DgA3dk3oYZ+KnnPEtS6M1sAmAAddtUdrOrJ+0xJPQHkfElZmpQ==}
+
'@atcute/lexicon-doc@1.1.4':
+
resolution: {integrity: sha512-OL0fsXtbnN/KwCq/L3nWGvOCdSHV0NWTatgLUIPt+T9AhcziFNaXAbbjvVHdflr3ZaLh3ksleHK0J789UBhlWQ==}
'@atcute/lexicon-resolver@0.1.3':
resolution: {integrity: sha512-4AOS3KKm60GtBfl7ue/35xwZlylAuX5V2xmXnAmNoiN3vIauNkYawwRqgtni5q+EIV9R7p4D8tzkv58NaZ8fEQ==}
···
'@atcute/multibase@1.1.6':
resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==}
-
'@atcute/oauth-browser-client@1.0.27':
-
resolution: {integrity: sha512-Ng1tCOTMLgFHHoIHXTtCZR1/ND62an1qxPX2kBoUzkxxd7iCP7IBYYqOiKyJYT5n1R4zS+s29hFS4t9mxXa5kQ==}
+
'@atcute/oauth-browser-client@2.0.1':
+
resolution: {integrity: sha512-lG021GkeORG06zfFf4bH85egObjBEKHNgAWHvbtY/E2dX4wxo88hf370pJDx8acdnuUJLJ2VKPikJtZwo4Heeg==}
'@atcute/repo@0.1.0':
resolution: {integrity: sha512-INiYAuma8dydBu7cqd2WVpcXh3mzhIepYBUqFWAK5MqMulPRLTRCc/9GW3G9pxYrOdlvLCVamG2Jf8XK0nuFEw==}
···
'@codemirror/view': ^6.0.0
'@lezer/highlight': ^1.0.0
-
'@iconify-json/lucide@1.2.70':
-
resolution: {integrity: sha512-56s9NdBKgshywVY1e4gOcxzAbU1J649e/jLHBJU1tyNqRs7mFLVEGwj2mmzHJ5YAZB5Tsngi4f/ocTBPlG06ZA==}
+
'@iconify-json/lucide@1.2.71':
+
resolution: {integrity: sha512-KL+3JHW+wN8QqT3CN+7e1SzTe+gIunFBuUICtVmdCmdVRx+MdGNkX4xJhXoYHfhYO2azrEhoGPG+It9k30aZkw==}
'@iconify/tailwind4@1.0.6':
resolution: {integrity: sha512-43ZXe+bC7CuE2LCgROdqbQeFYJi/J7L/k1UpSy8KDQlWVsWxPzLSWbWhlJx4uRYLOh1NRyw02YlDOgzBOFNd+A==}
···
'@lezer/common@1.3.0':
resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==}
-
'@lezer/highlight@1.2.2':
-
resolution: {integrity: sha512-z8TQwaBXXQIvG6i2g3e9cgMwUUXu9Ib7jo2qRRggdhwKpM56Dw3PM3wmexn+EGaaOZ7az0K7sjc3/gcGW7sz7A==}
+
'@lezer/highlight@1.2.3':
+
resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
'@lezer/json@1.0.3':
resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
···
engines: {node: '>=0.4.0'}
hasBin: true
-
babel-plugin-jsx-dom-expressions@0.40.1:
-
resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==}
+
babel-plugin-jsx-dom-expressions@0.40.3:
+
resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
peerDependencies:
'@babel/core': ^7.20.12
-
babel-preset-solid@1.9.9:
-
resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==}
+
babel-preset-solid@1.9.10:
+
resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
peerDependencies:
'@babel/core': ^7.0.0
-
solid-js: ^1.9.8
+
solid-js: ^1.9.10
peerDependenciesMeta:
solid-js:
optional: true
-
baseline-browser-mapping@2.8.20:
-
resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==}
+
baseline-browser-mapping@2.8.21:
+
resolution: {integrity: sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==}
hasBin: true
browserslist@4.27.0:
···
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
-
electron-to-chromium@1.5.240:
-
resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==}
+
electron-to-chromium@1.5.243:
+
resolution: {integrity: sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==}
enhanced-resolve@5.18.3:
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
···
engines: {node: ^18 || >=20}
hasBin: true
-
node-releases@2.0.26:
-
resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
+
node-releases@2.0.27:
+
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
package-manager-detector@1.5.0:
resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
···
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
engines: {node: '>=10'}
-
solid-js@1.9.9:
-
resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
+
solid-js@1.9.10:
+
resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
solid-refresh@0.6.3:
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
peerDependencies:
browserslist: '>= 4.21.0'
-
validate-html-nesting@1.2.3:
-
resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
-
vite-plugin-solid@2.11.10:
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
peerDependencies:
···
'@atcute/atproto': 3.1.8
'@atcute/lexicons': 1.2.2
-
'@atcute/lexicon-doc@1.1.3':
+
'@atcute/lexicon-doc@1.1.4':
dependencies:
'@badrap/valita': 0.4.6
···
'@atcute/crypto': 2.2.5
'@atcute/identity': 1.1.1
'@atcute/identity-resolver': 1.1.4(@atcute/identity@1.1.1)
-
'@atcute/lexicon-doc': 1.1.3
+
'@atcute/lexicon-doc': 1.1.4
'@atcute/lexicons': 1.2.2
'@atcute/repo': 0.1.0
'@atcute/uint8array': 1.0.5
···
dependencies:
'@atcute/uint8array': 1.0.5
-
'@atcute/oauth-browser-client@1.0.27':
+
'@atcute/oauth-browser-client@2.0.1':
dependencies:
'@atcute/client': 4.0.5
'@atcute/identity': 1.1.1
+
'@atcute/identity-resolver': 1.1.4(@atcute/identity@1.1.1)
'@atcute/lexicons': 1.2.2
'@atcute/multibase': 1.1.6
'@atcute/uint8array': 1.0.5
···
'@codemirror/state': 6.5.2
'@codemirror/view': 6.38.6
'@lezer/common': 1.3.0
-
'@lezer/highlight': 1.2.2
+
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
style-mod: 4.1.3
···
'@esbuild/win32-x64@0.25.11':
optional: true
-
'@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)':
+
'@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)':
dependencies:
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@codemirror/view': 6.38.6
-
'@lezer/highlight': 1.2.2
+
'@lezer/highlight': 1.2.3
-
'@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)':
+
'@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)':
dependencies:
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@codemirror/view': 6.38.6
-
'@lezer/highlight': 1.2.2
+
'@lezer/highlight': 1.2.3
-
'@iconify-json/lucide@1.2.70':
+
'@iconify-json/lucide@1.2.71':
dependencies:
'@iconify/types': 2.0.0
···
'@lezer/common@1.3.0': {}
-
'@lezer/highlight@1.2.2':
+
'@lezer/highlight@1.2.3':
dependencies:
'@lezer/common': 1.3.0
'@lezer/json@1.0.3':
dependencies:
'@lezer/common': 1.3.0
-
'@lezer/highlight': 1.2.2
+
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.2
'@lezer/lr@1.4.2':
···
'@atcute/cbor': 2.2.7
nanoevents: 9.1.0
-
'@solidjs/meta@0.29.4(solid-js@1.9.9)':
+
'@solidjs/meta@0.29.4(solid-js@1.9.10)':
dependencies:
-
solid-js: 1.9.9
+
solid-js: 1.9.10
-
'@solidjs/router@0.15.3(solid-js@1.9.9)':
+
'@solidjs/router@0.15.3(solid-js@1.9.10)':
dependencies:
-
solid-js: 1.9.9
+
solid-js: 1.9.10
'@standard-schema/spec@1.0.0': {}
···
acorn@8.15.0: {}
-
babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.5):
+
babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
dependencies:
'@babel/core': 7.28.5
'@babel/helper-module-imports': 7.18.6
···
'@babel/types': 7.28.5
html-entities: 2.3.3
parse5: 7.3.0
-
validate-html-nesting: 1.2.3
-
babel-preset-solid@1.9.9(@babel/core@7.28.5)(solid-js@1.9.9):
+
babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
dependencies:
'@babel/core': 7.28.5
-
babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.5)
+
babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5)
optionalDependencies:
-
solid-js: 1.9.9
+
solid-js: 1.9.10
-
baseline-browser-mapping@2.8.20: {}
+
baseline-browser-mapping@2.8.21: {}
browserslist@4.27.0:
dependencies:
-
baseline-browser-mapping: 2.8.20
+
baseline-browser-mapping: 2.8.21
caniuse-lite: 1.0.30001751
-
electron-to-chromium: 1.5.240
-
node-releases: 2.0.26
+
electron-to-chromium: 1.5.243
+
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.27.0)
caniuse-lite@1.0.30001751: {}
···
detect-libc@2.1.2: {}
-
electron-to-chromium@1.5.240: {}
+
electron-to-chromium@1.5.243: {}
enhanced-resolve@5.18.3:
dependencies:
···
nanoid@5.1.6: {}
-
node-releases@2.0.26: {}
+
node-releases@2.0.27: {}
package-manager-detector@1.5.0: {}
···
seroval@1.3.2: {}
-
solid-js@1.9.9:
+
solid-js@1.9.10:
dependencies:
csstype: 3.1.3
seroval: 1.3.2
seroval-plugins: 1.3.3(seroval@1.3.2)
-
solid-refresh@0.6.3(solid-js@1.9.9):
+
solid-refresh@0.6.3(solid-js@1.9.10):
dependencies:
'@babel/generator': 7.28.5
'@babel/helper-module-imports': 7.27.1
'@babel/types': 7.28.5
-
solid-js: 1.9.9
+
solid-js: 1.9.10
transitivePeerDependencies:
- supports-color
···
escalade: 3.2.0
picocolors: 1.1.1
-
validate-html-nesting@1.2.3: {}
-
-
vite-plugin-solid@2.11.10(solid-js@1.9.9)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)):
+
vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)):
dependencies:
'@babel/core': 7.28.5
'@types/babel__core': 7.20.5
-
babel-preset-solid: 1.9.9(@babel/core@7.28.5)(solid-js@1.9.9)
+
babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
merge-anything: 5.1.7
-
solid-js: 1.9.9
-
solid-refresh: 0.6.3(solid-js@1.9.9)
+
solid-js: 1.9.10
+
solid-refresh: 0.6.3(solid-js@1.9.10)
vite: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
vitefu: 1.1.1(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
transitivePeerDependencies:
+1 -3
src/components/account.tsx
···
deleteStoredSession,
getSession,
OAuthUserAgent,
-
resolveFromIdentity,
} from "@atcute/oauth-browser-client";
import { A } from "@solidjs/router";
import { createSignal, For, onMount, Show } from "solid-js";
···
localStorage.setItem("lastSignedIn", did);
await retrieveSession();
} catch {
-
const resolved = await resolveFromIdentity(did);
const authUrl = await createAuthorizationUrl({
scope: import.meta.env.VITE_OAUTH_SCOPE,
-
...resolved,
+
target: { type: "account", identifier: did },
});
await new Promise((resolve) => setTimeout(resolve, 250));
+14 -16
src/components/login.tsx
···
import { Client } from "@atcute/client";
import { Did } from "@atcute/lexicons";
-
import { isHandle } from "@atcute/lexicons/syntax";
+
import { isDid, isHandle } from "@atcute/lexicons/syntax";
import {
configureOAuth,
createAuthorizationUrl,
+
defaultIdentityResolver,
finalizeAuthorization,
getSession,
OAuthUserAgent,
-
resolveFromIdentity,
-
resolveFromService,
type Session,
} from "@atcute/oauth-browser-client";
import { createSignal, Show } from "solid-js";
+
import { didDocumentResolver, handleResolver } from "../utils/api";
configureOAuth({
metadata: {
client_id: import.meta.env.VITE_OAUTH_CLIENT_ID,
redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URL,
},
+
identityResolver: defaultIdentityResolver({
+
handleResolver: handleResolver,
+
didDocumentResolver: didDocumentResolver,
+
}),
});
export const [agent, setAgent] = createSignal<OAuthUserAgent | undefined>();
···
try {
setNotice("");
if (!handle) return;
-
let resolved;
-
if (!isHandle(handle)) {
-
setNotice(`Resolving your service...`);
-
resolved = await resolveFromService(handle);
-
} else {
-
setNotice(`Resolving your identity...`);
-
resolved = await resolveFromIdentity(handle);
-
}
-
setNotice(`Contacting your data server...`);
const authUrl = await createAuthorizationUrl({
scope: import.meta.env.VITE_OAUTH_SCOPE,
-
...resolved,
+
target:
+
isHandle(handle) || isDid(handle) ?
+
{ type: "account", identifier: handle }
+
: { type: "pds", serviceUrl: handle },
});
setNotice(`Redirecting...`);
···
if (params.has("state") && (params.has("code") || params.has("error"))) {
history.replaceState(null, "", location.pathname + location.search);
-
const session = await finalizeAuthorization(params);
-
const did = session.info.sub;
+
const auth = await finalizeAuthorization(params);
+
const did = auth.session.info.sub;
localStorage.setItem("lastSignedIn", did);
···
const newSessions: Sessions = sessions ? JSON.parse(sessions) : { [did]: {} };
newSessions[did] = { signedIn: true };
localStorage.setItem("sessions", JSON.stringify(newSessions));
-
return session;
+
return auth.session;
} else {
const lastSignedIn = localStorage.getItem("lastSignedIn");
+2 -2
src/utils/api.ts
···
import { createStore } from "solid-js/store";
import { setPDS } from "../components/navbar";
-
const didDocumentResolver = new CompositeDidDocumentResolver({
+
export const didDocumentResolver = new CompositeDidDocumentResolver({
methods: {
plc: new PlcDidDocumentResolver({
apiUrl: localStorage.getItem("plcDirectory") ?? "https://plc.directory",
···
},
});
-
const handleResolver = new CompositeHandleResolver({
+
export const handleResolver = new CompositeHandleResolver({
strategy: "dns-first",
methods: {
dns: new DohJsonHandleResolver({ dohUrl: "https://dns.google/resolve?" }),