42563ebc35
feat(matrix/fediverse): allow users to favorite, reblog, and redact Fediverse posts from Matrix, using m.reaction on our new meta field. feat(fediverse): add suggestions for follow/unfollow commands. refactor(matrix/fediverse): add meta field for commands by reaction, and commands by reply. refactor(fediverse): relax polling on timeline/notifs thru new handling.
70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
const { LocalStorageCryptoStore } = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store');
|
|
|
|
const matrixTokenLogin = async () => {
|
|
matrixClient = sdk.createClient({
|
|
baseUrl: config.matrix.domain,
|
|
accessToken: matrix.auth.access_token,
|
|
userId: matrix.auth.user_id,
|
|
deviceId: matrix.auth.device_id,
|
|
sessionStore: new sdk.WebStorageSessionStore(localStorage),
|
|
cryptoStore: new LocalStorageCryptoStore(localStorage),
|
|
});
|
|
matrixClient.initCrypto()
|
|
.then(() => {
|
|
if (!localStorage.getItem('crypto.device_data')) {
|
|
return console.log(
|
|
'====================================================\n'
|
|
+ 'New OLM Encryption Keys created, please restart ligh7hau5.\n'
|
|
+ '====================================================',
|
|
);
|
|
}
|
|
matrixClient.startClient();
|
|
});
|
|
};
|
|
|
|
module.exports.matrixTokenLogin = matrixTokenLogin;
|
|
|
|
module.exports.getMatrixToken = async () => {
|
|
matrixClient = sdk.createClient(config.matrix.domain);
|
|
matrixClient.loginWithPassword(config.matrix.user, config.matrix.password)
|
|
.then((response) => {
|
|
matrix.auth = {
|
|
user_id: response.user_id,
|
|
access_token: response.access_token,
|
|
device_id: response.device_id,
|
|
};
|
|
localStorage.setItem('matrix_auth', JSON.stringify(response, null, 2));
|
|
}).then(() => matrixTokenLogin())
|
|
.catch((e) => {
|
|
console.log(e);
|
|
});
|
|
};
|
|
|
|
module.exports.registerFediverseApp = async () => {
|
|
axios.post(`${config.fediverse.domain}/api/v1/apps`,
|
|
{
|
|
client_name: config.fediverse.client_name,
|
|
redirect_uris: 'urn:ietf:wg:oauth:2.0:oob',
|
|
scopes: 'read write follow push',
|
|
})
|
|
.then((response) => {
|
|
axios.post(`${config.fediverse.domain}/oauth/token`,
|
|
{
|
|
username: config.fediverse.username,
|
|
password: config.fediverse.password,
|
|
client_id: response.data.client_id,
|
|
client_secret: response.data.client_secret,
|
|
scope: 'read write follow push',
|
|
grant_type: 'password',
|
|
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
|
})
|
|
.then((tokens) => {
|
|
localStorage.setItem('fediverse_auth', JSON.stringify(tokens.data, null, 2));
|
|
})
|
|
.catch((e) => {
|
|
console.log(e);
|
|
});
|
|
}).catch((e) => {
|
|
console.log(e);
|
|
});
|
|
};
|