mirror of
https://github.com/litruv/lit.ruv.wtf.git
synced 2026-07-24 02:36:02 +10:00
feat: add MxjsClient for lightweight Matrix client functionality
- Implemented core methods for user authentication (register, login, logout). - Added room management features (createRoom, joinRoom, leaveRoom, inviteUser). - Included message handling capabilities (sendMessage, editMessage, redactEvent). - Introduced user moderation actions (kickUser, banUser, unbanUser). - Implemented profile management (getProfile, setDisplayName, setAvatarUrl). - Added support for media uploads and fetching messages from room timelines. - Included event handling with emit and on methods for custom event listeners. - Sanitization of HTML content and mention handling in messages.
This commit is contained in:
10
package-lock.json
generated
10
package-lock.json
generated
@@ -9,9 +9,9 @@
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@litruv/mxjs-lite": "^1.0.1",
|
||||
"jimp": "^1.6.0"
|
||||
},
|
||||
"devDependencies": {}
|
||||
}
|
||||
},
|
||||
"node_modules/@jimp/core": {
|
||||
"version": "1.6.0",
|
||||
@@ -425,6 +425,12 @@
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@litruv/mxjs-lite": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@litruv/mxjs-lite/-/mxjs-lite-1.1.2.tgz",
|
||||
"integrity": "sha512-kEL/MZdezhibPNQFiQWUWRBPRxfjWTUNnDNpqxmDyLFFG8iLXMQy2mJAMYPBgxw6D+NXARiMcABp5pEWezfC9w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@tokenizer/token": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
"author": "Max Litruv Boonzaayer",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@litruv/mxjs-lite": "^1.0.1",
|
||||
"jimp": "^1.6.0"
|
||||
},
|
||||
"repository": {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1133
website/matrix-client.old.js
Normal file
1133
website/matrix-client.old.js
Normal file
File diff suppressed because it is too large
Load Diff
1243
website/mxjs-lite.js
Normal file
1243
website/mxjs-lite.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -253,13 +253,9 @@ class NumberMatchGame {
|
||||
}
|
||||
}
|
||||
|
||||
// Wrap-around horizontal (end of one row to start of next)
|
||||
if (rowEnd === rowStart + 1 && colStart === this.width - 1 && colEnd === 0) {
|
||||
// Adjacent via wrap
|
||||
return true;
|
||||
}
|
||||
if (diff === 1 || diff === this.width) {
|
||||
// Directly adjacent
|
||||
// Wrap-around: scan reading order across row boundaries (right to end of row,
|
||||
// down to next row, left-to-right until reaching the second tile)
|
||||
if (rowStart !== rowEnd && this.isSegmentClear(start, end, 1)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import samsayCmd from './scripts/commands/samsay.js';
|
||||
// Import Matrix client
|
||||
import {
|
||||
initMatrixClient,
|
||||
updateClientSession,
|
||||
chatMode,
|
||||
matrixApi,
|
||||
fetchPublicLastMessage,
|
||||
@@ -581,6 +582,14 @@ const commands = {
|
||||
};
|
||||
}
|
||||
|
||||
// Sync session to mxClient if exists
|
||||
if (window.matrixSession.accessToken && window.matrixSession.userId) {
|
||||
updateClientSession({
|
||||
accessToken: window.matrixSession.accessToken,
|
||||
userId: window.matrixSession.userId
|
||||
});
|
||||
}
|
||||
|
||||
// Register/login user if not logged in
|
||||
if (!window.matrixSession.accessToken) {
|
||||
try {
|
||||
@@ -627,6 +636,8 @@ const commands = {
|
||||
localStorage.setItem('matrix_username', username);
|
||||
localStorage.setItem('matrix_password', password);
|
||||
|
||||
updateClientSession({ accessToken: regData.access_token, userId: regData.user_id });
|
||||
|
||||
term.writeln(` Registered as: ${regData.user_id}\r\n`);
|
||||
} else if (regData.errcode === 'M_USER_IN_USE') {
|
||||
// Username exists, try to login
|
||||
@@ -653,6 +664,8 @@ const commands = {
|
||||
localStorage.setItem('matrix_username', username);
|
||||
localStorage.setItem('matrix_password', password);
|
||||
|
||||
updateClientSession({ accessToken: loginData.access_token, userId: loginData.user_id });
|
||||
|
||||
term.writeln(` Logged in as: ${loginData.user_id}\r\n`);
|
||||
} else {
|
||||
return ` Error: Failed to login - ${loginData.error || loginData.errcode || 'Unknown error'}`;
|
||||
|
||||
Reference in New Issue
Block a user