2024-08-19 14:19:44 -07:00
|
|
|
import { getFeatures, PLEROMA, TOKI, type Instance } from 'pl-api';
|
2023-01-13 16:42:41 -08:00
|
|
|
|
2024-08-28 04:41:08 -07:00
|
|
|
import type { RootState } from 'pl-fe/store';
|
2023-01-25 14:32:59 -08:00
|
|
|
|
2023-01-13 16:42:41 -08:00
|
|
|
/**
|
|
|
|
* Get the OAuth scopes to use for login & signup.
|
|
|
|
* Mastodon will refuse scopes it doesn't know, so care is needed.
|
|
|
|
*/
|
2023-01-25 14:32:59 -08:00
|
|
|
const getInstanceScopes = (instance: Instance) => {
|
2024-08-11 01:48:58 -07:00
|
|
|
const v = getFeatures(instance).version;
|
2023-01-13 16:42:41 -08:00
|
|
|
|
|
|
|
switch (v.software) {
|
2024-08-19 14:19:44 -07:00
|
|
|
case TOKI:
|
|
|
|
return 'read write follow push write:bites';
|
2023-01-13 16:42:41 -08:00
|
|
|
case PLEROMA:
|
|
|
|
return 'read write follow push admin';
|
|
|
|
default:
|
|
|
|
return 'read write follow push';
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-01-25 14:32:59 -08:00
|
|
|
/** Convenience function to get scopes from instance in store. */
|
2023-09-23 18:41:24 -07:00
|
|
|
const getScopes = (state: RootState) => getInstanceScopes(state.instance);
|
2023-01-25 14:32:59 -08:00
|
|
|
|
2023-01-13 16:42:41 -08:00
|
|
|
export {
|
2023-01-25 14:32:59 -08:00
|
|
|
getInstanceScopes,
|
2023-01-13 16:42:41 -08:00
|
|
|
getScopes,
|
2023-04-11 14:22:34 -07:00
|
|
|
};
|