From 3dafe4133ccb0a7b295815d9c56432ec6aff31e5 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Tue, 19 Aug 2014 16:39:30 +0100 Subject: [PATCH 01/13] Added registration/login jsfiddle, formatted so it can be loaded directly from jsfiddle. Requires jQuery 1.8.3 --- jsfiddles/register_login/demo.css | 7 +++ jsfiddles/register_login/demo.html | 20 +++++++++ jsfiddles/register_login/demo.js | 69 ++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 jsfiddles/register_login/demo.css create mode 100644 jsfiddles/register_login/demo.html create mode 100644 jsfiddles/register_login/demo.js diff --git a/jsfiddles/register_login/demo.css b/jsfiddles/register_login/demo.css new file mode 100644 index 00000000..11781c25 --- /dev/null +++ b/jsfiddles/register_login/demo.css @@ -0,0 +1,7 @@ +.loggedin { + visibility: hidden; +} + +p { + font-family: monospace; +} diff --git a/jsfiddles/register_login/demo.html b/jsfiddles/register_login/demo.html new file mode 100644 index 00000000..9cdb1613 --- /dev/null +++ b/jsfiddles/register_login/demo.html @@ -0,0 +1,20 @@ +
+

This registration/login demo requires a home server to be running on http://localhost:8080

+
+
+ + + +
+
+ + + +
+
+

+ + +

+
+ diff --git a/jsfiddles/register_login/demo.js b/jsfiddles/register_login/demo.js new file mode 100644 index 00000000..1644f76a --- /dev/null +++ b/jsfiddles/register_login/demo.js @@ -0,0 +1,69 @@ +var accountInfo = {}; + +var showLoggedIn = function(data) { + accountInfo = data; + $(".loggedin").css({visibility: "visible"}); + $("#welcomeText").text("Welcome " + accountInfo.user_id+". Your access token is: " + + accountInfo.access_token); +}; + +$('.register').live('click', function() { + var user = $("#user").val(); + var password = $("#password").val(); + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/register", + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ user_id: user, password: password }), + dataType: "json", + success: function(data) { + showLoggedIn(data); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); + +var login = function(user, password) { + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/login", + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), + dataType: "json", + success: function(data) { + showLoggedIn(data); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}; + +$('.login').live('click', function() { + var user = $("#userLogin").val(); + var password = $("#passwordLogin").val(); + $.getJSON("http://localhost:8080/matrix/client/api/v1/login", function(data) { + if (data.type !== "m.login.password") { + alert("I don't know how to login with this type: " + data.type); + return; + } + login(user, password); + }); +}); + +$('.logout').live('click', function() { + accountInfo = {}; + $("#imSyncText").text(""); + $(".loggedin").css({visibility: "hidden"}); +}); + +$('.testToken').live('click', function() { + var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + $.getJSON(url, function(data) { + $("#imSyncText").text(JSON.stringify(data, undefined, 2)); + }).fail(function(err) { + $("#imSyncText").text(JSON.stringify($.parseJSON(err.responseText))); + }); +}); From 8fb3367238ecd9779ca64c36a2a40b70dd47454b Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Tue, 19 Aug 2014 17:34:31 +0100 Subject: [PATCH 02/13] More fiddles, more fun! --- jsfiddles/create_room_send_msg/demo.css | 17 ++++ jsfiddles/create_room_send_msg/demo.html | 30 +++++++ jsfiddles/create_room_send_msg/demo.js | 109 +++++++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 jsfiddles/create_room_send_msg/demo.css create mode 100644 jsfiddles/create_room_send_msg/demo.html create mode 100644 jsfiddles/create_room_send_msg/demo.js diff --git a/jsfiddles/create_room_send_msg/demo.css b/jsfiddles/create_room_send_msg/demo.css new file mode 100644 index 00000000..48a55f37 --- /dev/null +++ b/jsfiddles/create_room_send_msg/demo.css @@ -0,0 +1,17 @@ +.loggedin { + visibility: hidden; +} + +p { + font-family: monospace; +} + +table +{ + border-spacing:5px; +} + +th,td +{ + padding:5px; +} diff --git a/jsfiddles/create_room_send_msg/demo.html b/jsfiddles/create_room_send_msg/demo.html new file mode 100644 index 00000000..31c26c76 --- /dev/null +++ b/jsfiddles/create_room_send_msg/demo.html @@ -0,0 +1,30 @@ +
+

This room creation / message sending demo requires a home server to be running on http://localhost:8080

+
+
+ + + +
+
+
+ + +
+
+ + + +
+ + + + + + + + + +
Room IDMy stateRoom AliasLatest message
+
+ diff --git a/jsfiddles/create_room_send_msg/demo.js b/jsfiddles/create_room_send_msg/demo.js new file mode 100644 index 00000000..c17eb26b --- /dev/null +++ b/jsfiddles/create_room_send_msg/demo.js @@ -0,0 +1,109 @@ +var accountInfo = {}; + +var showLoggedIn = function(data) { + accountInfo = data; + getCurrentRoomList(); + $(".loggedin").css({visibility: "visible"}); +}; + +$('.login').live('click', function() { + var user = $("#userLogin").val(); + var password = $("#passwordLogin").val(); + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/login", + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), + dataType: "json", + success: function(data) { + showLoggedIn(data); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); + +var getCurrentRoomList = function() { + var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + $.getJSON(url, function(data) { + for (var i=0; i 0) { + data.room_alias_name = roomAlias; + } + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/rooms?access_token="+accountInfo.access_token, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + dataType: "json", + success: function(data) { + data.membership = "join"; // you are automatically joined into every room you make. + data.latest_message = ""; + addRoom(data); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); + +var addRoom = function(data) { + row = "" + + ""+data.room_id+"" + + ""+data.membership+"" + + ""+data.room_alias+"" + + ""+data.latest_message+"" + + ""; + $("#rooms").append(row); +}; + +$('.sendMessage').live('click', function() { + var roomId = $("#roomId").val(); + var body = $("#messageBody").val(); + var msgId = $.now(); + + if (roomId.length === 0 || body.length === 0) { + return; + } + + var url = "http://localhost:8080/matrix/client/api/v1/rooms/$roomid/messages/$user/$msgid?access_token=$token"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$roomid", encodeURIComponent(roomId)); + url = url.replace("$user", encodeURIComponent(accountInfo.user_id)); + url = url.replace("$msgid", msgId); + + var data = { + msgtype: "m.text", + body: body + }; + + $.ajax({ + url: url, + type: "PUT", + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + dataType: "json", + success: function(data) { + $("#messageBody").val(""); + // wipe the table and reload it. Using the event stream would be the best + // solution but that is out of scope of this fiddle. + $("#rooms").find("tr:gt(0)").remove(); + getCurrentRoomList(); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); From eee7cd7730c9eadb1f31b6d14acedbddea05e355 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 20 Aug 2014 13:47:20 +0100 Subject: [PATCH 03/13] Added more jsfiddles. --- jsfiddles/event_stream/demo.css | 17 ++++ jsfiddles/event_stream/demo.html | 23 +++++ jsfiddles/event_stream/demo.js | 142 +++++++++++++++++++++++++++ jsfiddles/room_memberships/demo.css | 17 ++++ jsfiddles/room_memberships/demo.html | 37 +++++++ jsfiddles/room_memberships/demo.js | 139 ++++++++++++++++++++++++++ 6 files changed, 375 insertions(+) create mode 100644 jsfiddles/event_stream/demo.css create mode 100644 jsfiddles/event_stream/demo.html create mode 100644 jsfiddles/event_stream/demo.js create mode 100644 jsfiddles/room_memberships/demo.css create mode 100644 jsfiddles/room_memberships/demo.html create mode 100644 jsfiddles/room_memberships/demo.js diff --git a/jsfiddles/event_stream/demo.css b/jsfiddles/event_stream/demo.css new file mode 100644 index 00000000..48a55f37 --- /dev/null +++ b/jsfiddles/event_stream/demo.css @@ -0,0 +1,17 @@ +.loggedin { + visibility: hidden; +} + +p { + font-family: monospace; +} + +table +{ + border-spacing:5px; +} + +th,td +{ + padding:5px; +} diff --git a/jsfiddles/event_stream/demo.html b/jsfiddles/event_stream/demo.html new file mode 100644 index 00000000..ee4fc3ea --- /dev/null +++ b/jsfiddles/event_stream/demo.html @@ -0,0 +1,23 @@ +
+

This event stream demo requires a home server to be running on http://localhost:8080

+
+
+ + + +
+
+
+ +
+

+ + + + + + + +
Room IDLatest message
+
+ diff --git a/jsfiddles/event_stream/demo.js b/jsfiddles/event_stream/demo.js new file mode 100644 index 00000000..b657b809 --- /dev/null +++ b/jsfiddles/event_stream/demo.js @@ -0,0 +1,142 @@ +var accountInfo = {}; + +var eventStreamInfo = { + from: "END" +}; + +var roomInfo = []; + +var longpollEventStream = function() { + var url = "http://localhost:8080/matrix/client/api/v1/events?access_token=$token&from=$from"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$from", eventStreamInfo.from); + + $.getJSON(url, function(data) { + eventStreamInfo.from = data.end; + + var hasNewLatestMessage = false; + for (var i=0; i"+roomList[i].room_id+"" + + ""+roomList[i].latest_message+"" + + ""; + rows += row; + } + + $("#rooms").append(rows); +}; + diff --git a/jsfiddles/room_memberships/demo.css b/jsfiddles/room_memberships/demo.css new file mode 100644 index 00000000..48a55f37 --- /dev/null +++ b/jsfiddles/room_memberships/demo.css @@ -0,0 +1,17 @@ +.loggedin { + visibility: hidden; +} + +p { + font-family: monospace; +} + +table +{ + border-spacing:5px; +} + +th,td +{ + padding:5px; +} diff --git a/jsfiddles/room_memberships/demo.html b/jsfiddles/room_memberships/demo.html new file mode 100644 index 00000000..96232e82 --- /dev/null +++ b/jsfiddles/room_memberships/demo.html @@ -0,0 +1,37 @@ +
+

This room membership demo requires a home server to be running on http://localhost:8080

+
+
+ + + +
+
+
+ +
+
+ + + + +
+
+ + +
+ + + + + + + + +
Room IDMy stateRoom Alias
+
+ diff --git a/jsfiddles/room_memberships/demo.js b/jsfiddles/room_memberships/demo.js new file mode 100644 index 00000000..b3ce0f0e --- /dev/null +++ b/jsfiddles/room_memberships/demo.js @@ -0,0 +1,139 @@ +var accountInfo = {}; + +var showLoggedIn = function(data) { + accountInfo = data; + getCurrentRoomList(); + $(".loggedin").css({visibility: "visible"}); +}; + +$('.login').live('click', function() { + var user = $("#userLogin").val(); + var password = $("#passwordLogin").val(); + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/login", + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), + dataType: "json", + success: function(data) { + $("#rooms").find("tr:gt(0)").remove(); + showLoggedIn(data); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); + +var getCurrentRoomList = function() { + $("#roomId").val(""); + // wipe the table and reload it. Using the event stream would be the best + // solution but that is out of scope of this fiddle. + $("#rooms").find("tr:gt(0)").remove(); + + var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + $.getJSON(url, function(data) { + for (var i=0; i"+data.room_id+"" + + ""+data.membership+"" + + ""+data.room_alias+"" + + ""; + $("#rooms").append(row); +}; + +$('.changeMembership').live('click', function() { + var roomId = $("#roomId").val(); + var member = $("#targetUser").val(); + var membership = $("#membership").val(); + + if (roomId.length === 0) { + return; + } + + var url = "http://localhost:8080/matrix/client/api/v1/rooms/$roomid/members/$user/state?access_token=$token"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$roomid", encodeURIComponent(roomId)); + url = url.replace("$user", encodeURIComponent(member)); + + if (membership === "leave") { + $.ajax({ + url: url, + type: "DELETE", + contentType: "application/json; charset=utf-8", + dataType: "json", + success: function(data) { + getCurrentRoomList(); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); + } + else { + var data = { + membership: membership + }; + + $.ajax({ + url: url, + type: "PUT", + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + dataType: "json", + success: function(data) { + getCurrentRoomList(); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); + } +}); + +$('.joinAlias').live('click', function() { + var roomAlias = $("#roomAlias").val(); + var url = "http://localhost:8080/matrix/client/api/v1/join/$roomalias?access_token=$token"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$roomalias", encodeURIComponent(roomAlias)); + $.ajax({ + url: url, + type: "PUT", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({}), + dataType: "json", + success: function(data) { + getCurrentRoomList(); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); From d5da30422ce56a6c777e2f7b9f14c23e4474805e Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 20 Aug 2014 16:45:59 +0100 Subject: [PATCH 04/13] Added final jsfiddle: an example app demonstrating most of the c2s api. --- jsfiddles/example_app/demo.css | 43 +++++ jsfiddles/example_app/demo.html | 56 ++++++ jsfiddles/example_app/demo.js | 303 ++++++++++++++++++++++++++++++++ 3 files changed, 402 insertions(+) create mode 100644 jsfiddles/example_app/demo.css create mode 100644 jsfiddles/example_app/demo.html create mode 100644 jsfiddles/example_app/demo.js diff --git a/jsfiddles/example_app/demo.css b/jsfiddles/example_app/demo.css new file mode 100644 index 00000000..4c1e157c --- /dev/null +++ b/jsfiddles/example_app/demo.css @@ -0,0 +1,43 @@ +.roomListDashboard, .roomContents, .sendMessageForm { + visibility: hidden; +} + +.roomList { + background-color: #909090; +} + +.messageWrapper { + background-color: #EEEEEE; + height: 400px; + overflow: scroll; +} + +.membersWrapper { + background-color: #EEEEEE; + height: 200px; + width: 50%; + overflow: scroll; +} + +.textEntry { + width: 100% +} + +p { + font-family: monospace; +} + +table +{ + border-spacing:5px; +} + +th,td +{ + padding:5px; +} + +.roomList tr:not(:first-child):hover { + background-color: orange; + cursor: pointer; +} diff --git a/jsfiddles/example_app/demo.html b/jsfiddles/example_app/demo.html new file mode 100644 index 00000000..0af946f6 --- /dev/null +++ b/jsfiddles/example_app/demo.html @@ -0,0 +1,56 @@ + + +
+
+ + +
+ + + + + + + + +
RoomMy stateLatest message
+
+ +
+

Select a room

+
+ + + +
+
+
+ + +
+
+ +
+

Member list:

+
+ + + +
+
+
+ diff --git a/jsfiddles/example_app/demo.js b/jsfiddles/example_app/demo.js new file mode 100644 index 00000000..295597f0 --- /dev/null +++ b/jsfiddles/example_app/demo.js @@ -0,0 +1,303 @@ +var accountInfo = {}; + +var eventStreamInfo = { + from: "END" +}; + +var roomInfo = []; +var memberInfo = []; +var viewingRoomId; + +// ************** Event Streaming ************** +var longpollEventStream = function() { + var url = "http://localhost:8080/matrix/client/api/v1/events?access_token=$token&from=$from"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$from", eventStreamInfo.from); + + $.getJSON(url, function(data) { + eventStreamInfo.from = data.end; + + var hasNewLatestMessage = false; + var updatedMemberList = false; + var i=0; + var j=0; + for (i=0; i 0) { + data.room_alias_name = roomAlias; + } + $.ajax({ + url: "http://localhost:8080/matrix/client/api/v1/rooms?access_token="+accountInfo.access_token, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + dataType: "json", + success: function(response) { + $("#roomAlias").val(""); + response.membership = "join"; // you are automatically joined into every room you make. + response.latest_message = ""; + + roomInfo.push(response); + setRooms(roomInfo); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); +}); + +// ************** Getting current state ************** +var getCurrentRoomList = function() { + var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + $.getJSON(url, function(data) { + for (var i=0; i=0; --i) { + addMessage(data.chunk[i]); + } + }); +}; + +var getMemberList = function(roomId) { + $("#members").empty(); + memberInfo = []; + var url = "http://localhost:8080/matrix/client/api/v1/rooms/" + roomId + "/members/list?access_token=" + accountInfo.access_token; + $.getJSON(url, function(data) { + for (var i=0; i"+roomList[i].room_id+"" + + ""+roomList[i].membership+"" + + ""+roomList[i].latest_message+"" + + ""; + rows += row; + } + + $("#rooms").append(rows); + + $('#rooms').find("tr").click(function(){ + var roomId = $(this).find('td:eq(0)').text(); + var membership = $(this).find('td:eq(1)').text(); + if (membership !== "join") { + console.log("Joining room " + roomId); + var url = "http://localhost:8080/matrix/client/api/v1/rooms/$roomid/members/$user/state?access_token=$token"; + url = url.replace("$token", accountInfo.access_token); + url = url.replace("$roomid", encodeURIComponent(roomId)); + url = url.replace("$user", encodeURIComponent(accountInfo.user_id)); + $.ajax({ + url: url, + type: "PUT", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({membership: "join"}), + dataType: "json", + success: function(data) { + loadRoomContent(roomId); + getCurrentRoomList(); + }, + error: function(err) { + alert(JSON.stringify($.parseJSON(err.responseText))); + } + }); + } + else { + loadRoomContent(roomId); + } + }); +}; + +var addMessage = function(data) { + var row = "" + + ""+data.user_id+"" + + ""+data.content.body+"" + + ""; + $("#messages").append(row); +}; + +var addMember = function(data) { + var row = "" + + ""+data.target_user_id+"" + + ""+data.content.membership+"" + + ""; + $("#members").append(row); +}; + From 1f3811b1b8f4742c07cb07f0bc56038ce15a8231 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 29 Aug 2014 15:01:46 +0100 Subject: [PATCH 05/13] Fix JSFiddles to work with the new C-S API. --- jsfiddles/create_room_send_msg/demo.js | 17 +++--- jsfiddles/event_stream/demo.js | 18 +++---- jsfiddles/example_app/demo.js | 56 +++++++++++++------- jsfiddles/register_login/demo.js | 4 +- jsfiddles/room_memberships/demo.html | 6 +-- jsfiddles/room_memberships/demo.js | 73 ++++++++++++-------------- 6 files changed, 93 insertions(+), 81 deletions(-) diff --git a/jsfiddles/create_room_send_msg/demo.js b/jsfiddles/create_room_send_msg/demo.js index c17eb26b..db2ae2d6 100644 --- a/jsfiddles/create_room_send_msg/demo.js +++ b/jsfiddles/create_room_send_msg/demo.js @@ -25,11 +25,12 @@ $('.login').live('click', function() { }); var getCurrentRoomList = function() { - var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + var url = "http://localhost:8080/matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { - for (var i=0; i=0; --i) { addMessage(data.chunk[i]); @@ -190,7 +193,8 @@ var getMessages = function(roomId) { var getMemberList = function(roomId) { $("#members").empty(); memberInfo = []; - var url = "http://localhost:8080/matrix/client/api/v1/rooms/" + roomId + "/members/list?access_token=" + accountInfo.access_token; + var url = "http://localhost:8080/matrix/client/api/v1/rooms/" + + encodeURIComponent(roomId) + "/members?access_token=" + accountInfo.access_token; $.getJSON(url, function(data) { for (var i=0; i"; + } + else if (data.content.membership === "join") { + msg = "joined the room"; + } + else if (data.content.membership === "leave") { + msg = "left the room"; + } + else { + msg = "" + data.content.membership + ""; + } + } + var row = "" + ""+data.user_id+"" + - ""+data.content.body+"" + + ""+msg+"" + ""; $("#messages").append(row); }; var addMember = function(data) { var row = "" + - ""+data.target_user_id+"" + + ""+data.state_key+"" + ""+data.content.membership+"" + ""; $("#members").append(row); diff --git a/jsfiddles/register_login/demo.js b/jsfiddles/register_login/demo.js index 1644f76a..270a9678 100644 --- a/jsfiddles/register_login/demo.js +++ b/jsfiddles/register_login/demo.js @@ -45,7 +45,7 @@ $('.login').live('click', function() { var user = $("#userLogin").val(); var password = $("#passwordLogin").val(); $.getJSON("http://localhost:8080/matrix/client/api/v1/login", function(data) { - if (data.type !== "m.login.password") { + if (data.flows[0].type !== "m.login.password") { alert("I don't know how to login with this type: " + data.type); return; } @@ -60,7 +60,7 @@ $('.logout').live('click', function() { }); $('.testToken').live('click', function() { - var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + var url = "http://localhost:8080/matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { $("#imSyncText").text(JSON.stringify(data, undefined, 2)); }).fail(function(err) { diff --git a/jsfiddles/room_memberships/demo.html b/jsfiddles/room_memberships/demo.html index 96232e82..4c1bf6b4 100644 --- a/jsfiddles/room_memberships/demo.html +++ b/jsfiddles/room_memberships/demo.html @@ -14,9 +14,9 @@ diff --git a/jsfiddles/room_memberships/demo.js b/jsfiddles/room_memberships/demo.js index b3ce0f0e..91cc96ab 100644 --- a/jsfiddles/room_memberships/demo.js +++ b/jsfiddles/room_memberships/demo.js @@ -4,6 +4,14 @@ var showLoggedIn = function(data) { accountInfo = data; getCurrentRoomList(); $(".loggedin").css({visibility: "visible"}); + $("#membership").change(function() { + if ($("#membership").val() === "invite") { + $("#targetUser").css({visibility: "visible"}); + } + else { + $("#targetUser").css({visibility: "hidden"}); + } +}); }; $('.login').live('click', function() { @@ -31,10 +39,11 @@ var getCurrentRoomList = function() { // solution but that is out of scope of this fiddle. $("#rooms").find("tr:gt(0)").remove(); - var url = "http://localhost:8080/matrix/client/api/v1/im/sync?access_token=" + accountInfo.access_token + "&from=END&to=START&limit=1"; + var url = "http://localhost:8080/matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { - for (var i=0; i Date: Sun, 31 Aug 2014 14:51:37 +0100 Subject: [PATCH 06/13] change the world: make the default matrix API URL prefix /_matrix rather than /matrix to make it easier for existing websites to mount a HS in their namespace without collisions. perl -pi -e 's#/matrix#/_matrix#g' ./cmdclient/console.py ./docs/client-server/howto.rst ./docs/client-server/specification.rst ./docs/client-server/swagger_matrix/directory ./docs/client-server/swagger_matrix/events ./docs/client-server/swagger_matrix/login ./docs/client-server/swagger_matrix/presence ./docs/client-server/swagger_matrix/profile ./docs/client-server/swagger_matrix/registration ./docs/client-server/swagger_matrix/rooms ./docs/server-server/specification.rst ./graph/graph.py ./jsfiddles/create_room_send_msg/demo.js ./jsfiddles/event_stream/demo.js ./jsfiddles/example_app/demo.js ./jsfiddles/register_login/demo.js ./jsfiddles/room_memberships/demo.js ./synapse/api/urls.py ./tests/federation/test_federation.py ./tests/handlers/test_presence.py ./tests/handlers/test_typing.py ./tests/rest/test_events.py ./tests/rest/test_presence.py ./tests/rest/test_profile.py ./tests/rest/test_rooms.py ./webclient/components/fileUpload/file-upload-service.js ./webclient/components/matrix/matrix-service.js --- jsfiddles/create_room_send_msg/demo.js | 8 ++++---- jsfiddles/event_stream/demo.js | 8 ++++---- jsfiddles/example_app/demo.js | 18 +++++++++--------- jsfiddles/register_login/demo.js | 8 ++++---- jsfiddles/room_memberships/demo.js | 10 +++++----- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/jsfiddles/create_room_send_msg/demo.js b/jsfiddles/create_room_send_msg/demo.js index db2ae2d6..61044da7 100644 --- a/jsfiddles/create_room_send_msg/demo.js +++ b/jsfiddles/create_room_send_msg/demo.js @@ -10,7 +10,7 @@ $('.login').live('click', function() { var user = $("#userLogin").val(); var password = $("#passwordLogin").val(); $.ajax({ - url: "http://localhost:8080/matrix/client/api/v1/login", + url: "http://localhost:8080/_matrix/client/api/v1/login", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), @@ -25,7 +25,7 @@ $('.login').live('click', function() { }); var getCurrentRoomList = function() { - var url = "http://localhost:8080/matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; + var url = "http://localhost:8080/_matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { var rooms = data.rooms; for (var i=0; i=0; --i) { @@ -193,7 +193,7 @@ var getMessages = function(roomId) { var getMemberList = function(roomId) { $("#members").empty(); memberInfo = []; - var url = "http://localhost:8080/matrix/client/api/v1/rooms/" + + var url = "http://localhost:8080/_matrix/client/api/v1/rooms/" + encodeURIComponent(roomId) + "/members?access_token=" + accountInfo.access_token; $.getJSON(url, function(data) { for (var i=0; i Date: Tue, 2 Sep 2014 15:29:38 +0100 Subject: [PATCH 07/13] Updated howto.rst to use the new APIs. Updated JSFiddles to use 8008. Linked new fiddles with howto.rst. Added more explanations. --- jsfiddles/create_room_send_msg/demo.html | 2 +- jsfiddles/create_room_send_msg/demo.js | 8 +++---- jsfiddles/event_stream/demo.html | 2 +- jsfiddles/event_stream/demo.js | 8 +++---- jsfiddles/example_app/demo.html | 2 +- jsfiddles/example_app/demo.js | 28 ++++++++++++++---------- jsfiddles/register_login/demo.html | 2 +- jsfiddles/register_login/demo.js | 8 +++---- jsfiddles/room_memberships/demo.html | 2 +- jsfiddles/room_memberships/demo.js | 10 ++++----- 10 files changed, 39 insertions(+), 33 deletions(-) diff --git a/jsfiddles/create_room_send_msg/demo.html b/jsfiddles/create_room_send_msg/demo.html index 31c26c76..088ff7ac 100644 --- a/jsfiddles/create_room_send_msg/demo.html +++ b/jsfiddles/create_room_send_msg/demo.html @@ -1,5 +1,5 @@
-

This room creation / message sending demo requires a home server to be running on http://localhost:8080

+

This room creation / message sending demo requires a home server to be running on http://localhost:8008

diff --git a/jsfiddles/create_room_send_msg/demo.js b/jsfiddles/create_room_send_msg/demo.js index 61044da7..3dc72638 100644 --- a/jsfiddles/create_room_send_msg/demo.js +++ b/jsfiddles/create_room_send_msg/demo.js @@ -10,7 +10,7 @@ $('.login').live('click', function() { var user = $("#userLogin").val(); var password = $("#passwordLogin").val(); $.ajax({ - url: "http://localhost:8080/_matrix/client/api/v1/login", + url: "http://localhost:8008/_matrix/client/api/v1/login", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), @@ -25,7 +25,7 @@ $('.login').live('click', function() { }); var getCurrentRoomList = function() { - var url = "http://localhost:8080/_matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; + var url = "http://localhost:8008/_matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { var rooms = data.rooms; for (var i=0; i -

This event stream demo requires a home server to be running on http://localhost:8080

+

This event stream demo requires a home server to be running on http://localhost:8008

diff --git a/jsfiddles/event_stream/demo.js b/jsfiddles/event_stream/demo.js index 997d1a22..5c81e08c 100644 --- a/jsfiddles/event_stream/demo.js +++ b/jsfiddles/event_stream/demo.js @@ -7,7 +7,7 @@ var eventStreamInfo = { var roomInfo = []; var longpollEventStream = function() { - var url = "http://localhost:8080/_matrix/client/api/v1/events?access_token=$token&from=$from"; + var url = "http://localhost:8008/_matrix/client/api/v1/events?access_token=$token&from=$from"; url = url.replace("$token", accountInfo.access_token); url = url.replace("$from", eventStreamInfo.from); @@ -48,7 +48,7 @@ $('.login').live('click', function() { var user = $("#userLogin").val(); var password = $("#passwordLogin").val(); $.ajax({ - url: "http://localhost:8080/_matrix/client/api/v1/login", + url: "http://localhost:8008/_matrix/client/api/v1/login", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify({ user: user, password: password, type: "m.login.password" }), @@ -65,7 +65,7 @@ $('.login').live('click', function() { var getCurrentRoomList = function() { $("#roomId").val(""); - var url = "http://localhost:8080/_matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; + var url = "http://localhost:8008/_matrix/client/api/v1/initialSync?access_token=" + accountInfo.access_token + "&limit=1"; $.getJSON(url, function(data) { var rooms = data.rooms; for (var i=0; i