You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
matrix-chat/src/matrix.js

84 lines
2.6 KiB
JavaScript

import matrix from 'matrix-js-sdk';
import main from '@/main.js';
const matrix_cli = matrix.createClient("https://adb.sh");
let session = {
user: "",
password: "",
access_token: "",
rooms: [],
currentRoom: undefined
};
export default {
data(){
return {
session: session
}
},
methods: {
login(){
matrix_cli.login("m.login.password", {
user: session.user,
password: session.password,
initial_device_display_name: "matrix chat",
}).then((response) => {
console.log(`access token => ${response.access_token}`);
session.access_token = response.access_token
document.cookie = `access_token=${session.access_token}; user=${session.user};`;
if (response.error){
main.methods.error(response.error)
console.log(`login error => ${response.error}`)
}
main.methods.router({path: "rooms/"})
matrix_cli.startClient();
matrix_cli.once('sync', function (state){
console.log(state)
})
});
}
}
}
matrix_cli.on("event", event => {
console.log(event.getType());
console.log(event);
matrix_cli.getRooms().forEach(newRoom => {
let room = session.rooms.find(room => room.roomId === newRoom.roomId)
if (!room){
session.rooms.push({name: newRoom.name, roomId: newRoom.roomId, messages: []})
console.log(`new room => ${newRoom.name}`)
}
else if (room.name !== newRoom.name){
console.log(`roomname changed from ${room.name} to ${newRoom.name}`)
room.name = newRoom.name
}
})
console.log(session)
})
matrix_cli.on("Room.timeline", event => {
if (event.getType() !== "m.room.message") return;
console.log(`new message => ${event.event.content.body}`);
let room = session.rooms.find(room => room.roomId === event.event.room_id)
if (!room){
session.rooms.push({name: "undefined", roomId: event.event.room_id, messages: [event.event]})
console.log(`undefined room name for => ${event.event.room_id}`)
}
else room.messages.push(event.event)
});
/*
if (getCookie("access_token")){
main.methods.router({path: "rooms/"})
}
else main.methods.router({path: "login"})
*/
/*function getCookie(key){
let cookies = document.cookie.split(';');
cookies.forEach(cookie => {
if (cookie.split('=')[0] === key)
return cookie.split('=')[1];
})
return false;
}*/