diff --git a/package.json b/package.json index aeec5ff4d..1475b0202 100644 --- a/package.json +++ b/package.json @@ -114,6 +114,7 @@ "intl-messageformat": "10.5.11", "intl-pluralrules": "^2.0.0", "isomorphic-dompurify": "^2.3.0", + "ky": "^1.7.2", "leaflet": "^1.8.0", "lexical": "^0.18.0", "line-awesome": "^1.3.0", diff --git a/src/hooks/useClient.ts b/src/hooks/useClient.ts new file mode 100644 index 000000000..e81023bc5 --- /dev/null +++ b/src/hooks/useClient.ts @@ -0,0 +1,20 @@ +import ky, { KyInstance } from 'ky'; + +import { useAppSelector } from './useAppSelector'; +import { useOwnAccount } from './useOwnAccount'; + +export function useClient(): KyInstance { + const { account } = useOwnAccount(); + const accessToken = useAppSelector((state) => account ? state.auth.users.get(account.url)?.access_token : undefined); + + const headers: Record = {}; + + if (accessToken) { + headers.Authorization = `Bearer ${accessToken}`; + } + + return ky.create({ + prefixUrl: account ? new URL(account.url).origin : undefined, + headers, + }); +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e59e33255..677cc3216 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5938,6 +5938,11 @@ known-css-properties@^0.29.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.29.0.tgz#e8ba024fb03886f23cb882e806929f32d814158f" integrity sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ== +ky@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/ky/-/ky-1.7.2.tgz#b97d9b997ba51ff1e152f0815d3d27b86513eb1c" + integrity sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg== + kysely@^0.27.3: version "0.27.3" resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.27.3.tgz#6cc6c757040500b43c4ac596cdbb12be400ee276"