Files
ncd-fe/packages/pl-fe/src/utils/scopes.ts
nicole mikołajczyk 9d6275c73c pl-api: detect hollo and fix sign in
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2025-07-08 01:19:05 +02:00

51 lines
1.1 KiB
TypeScript

import { getFeatures, HOLLO, ICESHRIMP_NET, PLEROMA, TOKI, type Instance } from 'pl-api';
import type { RootState } from 'pl-fe/store';
/**
* Get the OAuth scopes to use for login & signup.
* Mastodon will refuse scopes it doesn't know, so care is needed.
*/
const getInstanceScopes = (instance: Instance, admin: boolean = true) => {
const v = getFeatures(instance).version;
let scopes;
switch (v.software) {
case ICESHRIMP_NET:
scopes = 'read write follow push iceshrimp';
break;
case TOKI:
scopes = 'read write follow push write:bites';
break;
case PLEROMA:
scopes = 'read write follow push';
break;
default:
scopes = 'read write follow push';
}
if (admin) {
switch (v.software) {
case HOLLO:
case ICESHRIMP_NET:
break;
case PLEROMA:
scopes += ' admin';
break;
default:
scopes += ' admin:read admin:write';
}
}
return scopes;
};
/** Convenience function to get scopes from instance in store. */
const getScopes = (state: RootState) => getInstanceScopes(state.instance);
export {
getInstanceScopes,
getScopes,
};