129 lines
4.2 KiB
HTML
129 lines
4.2 KiB
HTML
<!doctype html>
|
|
<html class="no-js" lang="en">
|
|
<head>
|
|
<title>Converse</title>
|
|
<meta charset="utf-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
<meta name="description" content="Converse Rust"/>
|
|
<meta name="author" content="moparisthebest" />
|
|
<meta name="keywords" content="xmpp chat webchat converse.js" />
|
|
<link rel="shortcut icon" type="image/ico" href="./dist/favicon.ico"/>
|
|
<link rel="manifest" href="./manifest.json">
|
|
<link type="text/css" rel="stylesheet" media="screen" href="./dist/converse.min.css" />
|
|
<!--
|
|
uncomment this to disable omemo
|
|
-->
|
|
<script src="./3rdparty/libsignal-protocol.min.js"></script>
|
|
<script src="./dist/converse.min.js"></script>
|
|
</head>
|
|
<body class="converse-fullscreen">
|
|
<noscript>You need to enable JavaScript to run the Converse.js chat app.</noscript>
|
|
<div id="conversejs-bg"></div>
|
|
<script>
|
|
// access the pre-bundled global API functions
|
|
const { invoke } = window.__TAURI__.tauri;
|
|
const { getClient, ResponseType } = window.__TAURI__.http;
|
|
const tauriFetch = window.__TAURI__.http.fetch;
|
|
|
|
const realFetch = window.fetch;
|
|
|
|
// this is clearly not a complete fetch implementation
|
|
// but it's enough for the omemo downloadFile() function...
|
|
window.fetch = async function(url) {
|
|
console.log("fetching url: " + url);
|
|
|
|
const client = await getClient();
|
|
let response = await await client.get(
|
|
url, {
|
|
timeout: 30,
|
|
responseType: ResponseType.Binary
|
|
});
|
|
|
|
let data = new Uint8Array(response.data).buffer;
|
|
|
|
response.arrayBuffer = async function() {
|
|
return data;
|
|
};
|
|
|
|
return response;
|
|
};
|
|
|
|
function addCredentials (login, password) {
|
|
localStorage.setItem('login', login);
|
|
localStorage.setItem('password', password);
|
|
}
|
|
|
|
function getCredentials () {
|
|
const credentials = {}
|
|
credentials.login = localStorage.getItem('login') || '';
|
|
if (credentials.login) {
|
|
credentials.password = localStorage.getItem('password');
|
|
}
|
|
|
|
return credentials;
|
|
}
|
|
|
|
function removeCredentials () {
|
|
localStorage.removeItem('login');
|
|
localStorage.removeItem('password');
|
|
}
|
|
|
|
converse.plugins.add('converse-desktop-credentials', {
|
|
initialize () {
|
|
console.log("converse-desktop-credentials - initialize");
|
|
|
|
const { _converse } = this;
|
|
const { api } = _converse;
|
|
|
|
api.listen.on('afterResourceBinding', () => {
|
|
console.log("converse-desktop-credentials - afterResourceBinding");
|
|
if (_converse.connection.pass) {
|
|
addCredentials(
|
|
_converse.bare_jid,
|
|
_converse.connection.pass
|
|
);
|
|
}
|
|
});
|
|
|
|
api.listen.on('logout', () => {
|
|
console.log("converse-desktop-credentials - logout");
|
|
removeCredentials();
|
|
});
|
|
}
|
|
});
|
|
|
|
const { login, password } = getCredentials();
|
|
console.log('login: ' + login);
|
|
|
|
invoke('proxy_port').then((port) => {
|
|
console.log('proxy_port: ' + port);
|
|
|
|
converse.initialize({
|
|
auto_login: login && password,
|
|
jid: login,
|
|
password: password,
|
|
authentication: 'login',
|
|
auto_away: 300,
|
|
auto_reconnect: true,
|
|
websocket_url: 'ws://127.0.0.1:' + port + '/xmpp-websocket/',
|
|
assets_path: './dist/',
|
|
discover_connection_methods: false,
|
|
message_archiving: 'always',
|
|
play_sounds: false,
|
|
view_mode: 'fullscreen',
|
|
//loglevel: 'debug',
|
|
muc_respect_autojoin: true,
|
|
muc_show_logs_before_join: true,
|
|
whitelisted_plugins: ['converse-desktop-credentials']
|
|
}).catch((reason) => {
|
|
document.body.innerText = "error starting converse: " + reason;
|
|
console.log(document.body.innerText);
|
|
});
|
|
}).catch((reason) => {
|
|
document.body.innerText = "error starting proxy: " + reason;
|
|
console.log(document.body.innerText);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|