Start moving back to basing off react sdk: move vector out of examples dir
4
vector/README.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
matrix-react-example
|
||||
====================
|
||||
|
||||
A simple example of how to use the Matrix React SDK
|
1
vector/fonts
Symbolic link
|
@ -0,0 +1 @@
|
|||
../../skins/base/fonts/
|
BIN
vector/icons/android-chrome-144x144.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
vector/icons/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
vector/icons/android-chrome-36x36.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
vector/icons/android-chrome-48x48.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
vector/icons/android-chrome-72x72.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
vector/icons/android-chrome-96x96.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
vector/icons/apple-touch-icon-114x114.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
vector/icons/apple-touch-icon-120x120.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
vector/icons/apple-touch-icon-144x144.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
vector/icons/apple-touch-icon-152x152.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
vector/icons/apple-touch-icon-180x180.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
vector/icons/apple-touch-icon-57x57.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
vector/icons/apple-touch-icon-60x60.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
vector/icons/apple-touch-icon-72x72.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
vector/icons/apple-touch-icon-76x76.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
vector/icons/apple-touch-icon-precomposed.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
vector/icons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 31 KiB |
12
vector/icons/browserconfig.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/icons/mstile-70x70.png"/>
|
||||
<square150x150logo src="/icons/mstile-150x150.png"/>
|
||||
<square310x310logo src="/icons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="/icons/mstile-310x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
BIN
vector/icons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
vector/icons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
vector/icons/favicon-96x96.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
vector/icons/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
41
vector/icons/manifest.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "Vector",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/icons\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "\/icons\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "\/icons\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "\/icons\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "\/icons\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "\/icons\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
}
|
||||
]
|
||||
}
|
BIN
vector/icons/mstile-144x144.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
vector/icons/mstile-150x150.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
vector/icons/mstile-310x150.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
vector/icons/mstile-310x310.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
vector/icons/mstile-70x70.png
Normal file
After Width: | Height: | Size: 10 KiB |
1
vector/img
Symbolic link
|
@ -0,0 +1 @@
|
|||
../../skins/base/img
|
46
vector/index.html
Normal file
|
@ -0,0 +1,46 @@
|
|||
<!doctype html>
|
||||
<html lang="en" style="height: 100%;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Vector</title>
|
||||
<link href='fonts/Lato.css' rel='stylesheet' type='text/css'>
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/icons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/icons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/icons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/icons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/icons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/icons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/icons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/icons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="/icons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/icons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="/icons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="/icons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/icons/manifest.json">
|
||||
<link rel="shortcut icon" href="/icons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Vector">
|
||||
<meta name="application-name" content="Vector">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-TileImage" content="/icons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="/icons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
</head>
|
||||
<body style="height: 100%;">
|
||||
<audio id="ringbackAudio" loop>
|
||||
<source src="media/ringback.ogg" type="audio/ogg" />
|
||||
<source src="media/ringback.mp3" type="audio/mpeg" />
|
||||
</audio>
|
||||
<audio id="callendAudio">
|
||||
<source src="media/callend.ogg" type="audio/ogg" />
|
||||
<source src="media/callend.mp3" type="audio/mpeg" />
|
||||
</audio>
|
||||
<audio id="busyAudio">
|
||||
<source src="media/busy.ogg" type="audio/ogg" />
|
||||
<source src="media/busy.mp3" type="audio/mpeg" />
|
||||
</audio>
|
||||
<section id="matrixchat" style="height: 100%;"></section>
|
||||
<script src="bundle.js"></script>
|
||||
<link rel="stylesheet" href="node_modules/matrix-react-sdk/bundle.css">
|
||||
</body>
|
||||
</html>
|
91
vector/index.js
Normal file
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
Copyright 2015 OpenMarket Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var React = require("react");
|
||||
// In normal usage of the module:
|
||||
//var MatrixReactSdk = require("matrix-react-sdk");
|
||||
// Or to import the source directly from the file system:
|
||||
// (This is useful for debugging the SDK as it seems source
|
||||
// maps cannot pass through two stages).
|
||||
var MatrixReactSdk = require("../../src/index");
|
||||
|
||||
var lastLocationHashSet = null;
|
||||
|
||||
// Here, we do some crude URL analysis to allow
|
||||
// deep-linking. We only support registration
|
||||
// deep-links in this example.
|
||||
function routeUrl(location) {
|
||||
if (location.hash.indexOf('#/register') == 0) {
|
||||
var hashparts = location.hash.split('?');
|
||||
var params = {};
|
||||
if (hashparts.length == 2) {
|
||||
var pairs = hashparts[1].split('&');
|
||||
for (var i = 0; i < pairs.length; ++i) {
|
||||
var parts = pairs[i].split('=');
|
||||
if (parts.length != 2) continue;
|
||||
params[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
|
||||
}
|
||||
}
|
||||
window.matrixChat.showScreen('register', params);
|
||||
} else {
|
||||
window.matrixChat.showScreen(location.hash.substring(2));
|
||||
}
|
||||
}
|
||||
|
||||
function onHashChange(ev) {
|
||||
if (decodeURIComponent(window.location.hash) == lastLocationHashSet) {
|
||||
// we just set this: no need to route it!
|
||||
return;
|
||||
}
|
||||
routeUrl(window.location);
|
||||
}
|
||||
|
||||
var loaded = false;
|
||||
|
||||
// This will be called whenever the SDK changes screens,
|
||||
// so a web page can update the URL bar appropriately.
|
||||
var onNewScreen = function(screen) {
|
||||
if (!loaded) return;
|
||||
var hash = '#/' + screen;
|
||||
lastLocationHashSet = hash;
|
||||
window.location.hash = hash;
|
||||
}
|
||||
|
||||
// We use this to work out what URL the SDK should
|
||||
// pass through when registering to allow the user to
|
||||
// click back to the client having registered.
|
||||
// It's up to us to recognise if we're loaded with
|
||||
// this URL and tell MatrixClient to resume registration.
|
||||
var makeRegistrationUrl = function() {
|
||||
return window.location.protocol + '//' +
|
||||
window.location.host +
|
||||
window.location.pathname +
|
||||
'#/register';
|
||||
}
|
||||
|
||||
window.matrixChat = React.render(
|
||||
<MatrixReactSdk.MatrixChat onNewScreen={onNewScreen} registrationUrl={makeRegistrationUrl()} />,
|
||||
document.getElementById('matrixchat')
|
||||
);
|
||||
|
||||
window.addEventListener('hashchange', onHashChange);
|
||||
window.onload = function() {
|
||||
routeUrl(window.location);
|
||||
loaded = true;
|
||||
}
|
||||
|
BIN
vector/media/busy.mp3
Normal file
BIN
vector/media/busy.ogg
Normal file
BIN
vector/media/callend.mp3
Normal file
BIN
vector/media/callend.ogg
Normal file
BIN
vector/media/message.mp3
Normal file
BIN
vector/media/message.ogg
Normal file
BIN
vector/media/ring.mp3
Normal file
BIN
vector/media/ring.ogg
Normal file
BIN
vector/media/ringback.mp3
Normal file
BIN
vector/media/ringback.ogg
Normal file
24
vector/package.json
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "matrix-react-example",
|
||||
"version": "0.0.1",
|
||||
"description": "Example usage of matrix-react-sdk",
|
||||
"author": "matrix.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/matrix-org/matrix-react-sdk"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"browserify": "^10.2.3",
|
||||
"http-server": "^0.8.0",
|
||||
"matrix-react-sdk": "../../",
|
||||
"parallelshell": "^1.2.0",
|
||||
"reactify": "^1.1.1",
|
||||
"uglify-js": "^2.4.23",
|
||||
"watchify": "^3.2.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "NODE_ENV=production browserify --ignore olm -t reactify index.js | uglifyjs -c -m -o bundle.js",
|
||||
"start": "parallelshell \"watchify --ignore olm -v -d -t reactify index.js -o bundle.js\" \"http-server\""
|
||||
}
|
||||
}
|