matrix-fake-api.js (10625B)
1 const fake_matrix_api_handler = (arg, fetch, win) => { 2 if (typeof arg === "string") { 3 console.log("REQUESTED: " + arg); 4 if (arg.includes('daydream_bg.wasm') || arg.includes('worker_bg.wasm')) { 5 console.log("doing fetch"); 6 return fetch(arg); 7 } 8 } else if (typeof arg === "object") { 9 console.log("REQUESTED: ", arg); 10 console.log("Special mode"); 11 if (arg["url"] === "http://localhost:8448/_matrix/client/r0/login") { 12 console.log("handling login"); 13 return new Promise((resolve, reject) => { 14 const resp_data = { 15 "user_id": "@carl:example.com", 16 "access_token": "123456", 17 "device_id": "KCZFUCGSLZ" 18 }; 19 const resp = new Blob([JSON.stringify(resp_data, null, 2)], {type: 'application/json'}); 20 21 const init = { 22 "status": 200, 23 "statusText": "Ok", 24 headers: {'Content-type': 'application/json'} 25 }; 26 const response = new win.Response(resp, init); 27 Object.defineProperty(response, "url", {value: arg["url"]}); 28 resolve(response) 29 } 30 ) 31 } else { 32 // TODO handle different test states 33 console.log("handling sync"); 34 return new Promise((resolve, reject) => { 35 const resp_data = { 36 "next_batch": "s72595_4483_1934", 37 "rooms": { 38 "join": { 39 "!726s6s6q:example.com": { 40 "unread_notifications": { 41 "highlight_count": 0, 42 "notification_count": 0, 43 }, 44 "summary": { 45 "m.heroes": [ 46 "@alice:example.com", 47 "@bob:example.com" 48 ], 49 "m.joined_member_count": 2, 50 "m.invited_member_count": 0 51 }, 52 "state": { 53 "events": [ 54 { 55 "content": { 56 "membership": "join", 57 "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", 58 "displayname": "Alice Margatroid" 59 }, 60 "type": "m.room.member", 61 "event_id": "$143273582443PhrSn:example.org", 62 "room_id": "!726s6s6q:example.com", 63 "sender": "@example:example.org", 64 "origin_server_ts": 1432735824653, 65 "unsigned": { 66 "age": 1234 67 }, 68 "state_key": "@alice:example.org" 69 } 70 ] 71 }, 72 "timeline": { 73 "events": [ 74 { 75 "content": { 76 "membership": "join", 77 "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", 78 "displayname": "Alice Margatroid" 79 }, 80 "type": "m.room.member", 81 "event_id": "$143273582443PhrSn:example.org", 82 "room_id": "!726s6s6q:example.com", 83 "sender": "@example:example.org", 84 "origin_server_ts": 1432735824653, 85 "unsigned": { 86 "age": 1234 87 }, 88 "state_key": "@alice:example.org" 89 }, 90 { 91 "content": { 92 "body": "This is an example text message", 93 "msgtype": "m.text", 94 "format": "org.matrix.custom.html", 95 "formatted_body": "<b>This is an example text message</b>" 96 }, 97 "type": "m.room.message", 98 "event_id": "$143273582443PhrSn:example.org", 99 "room_id": "!726s6s6q:example.com", 100 "sender": "@example:example.org", 101 "origin_server_ts": 1432735824653, 102 "unsigned": { 103 "age": 1234 104 } 105 } 106 ], 107 "limited": true, 108 "prev_batch": "t34-23535_0_0" 109 }, 110 "ephemeral": { 111 "events": [ 112 { 113 "content": { 114 "user_ids": [ 115 "@alice:matrix.org", 116 "@bob:example.com" 117 ] 118 }, 119 "type": "m.typing", 120 "room_id": "!jEsUZKDJdhlrceRyVU:example.org" 121 } 122 ] 123 }, 124 "account_data": { 125 "events": [ 126 { 127 "content": { 128 "tags": { 129 "u.work": { 130 "order": 0.9 131 } 132 } 133 }, 134 "type": "m.tag" 135 }, 136 { 137 "type": "org.example.custom.room.config", 138 "content": { 139 "custom_config_key": "custom_config_value" 140 } 141 } 142 ] 143 } 144 } 145 }, 146 "invite": { 147 "!696r7674:example.com": { 148 "invite_state": { 149 "events": [ 150 { 151 "sender": "@alice:example.com", 152 "type": "m.room.name", 153 "state_key": "", 154 "content": { 155 "name": "My Room Name" 156 } 157 }, 158 { 159 "sender": "@alice:example.com", 160 "type": "m.room.member", 161 "state_key": "@bob:example.com", 162 "content": { 163 "membership": "invite" 164 } 165 } 166 ] 167 } 168 } 169 }, 170 "leave": {} 171 } 172 }; 173 const resp = new Blob([JSON.stringify(resp_data, null, 2)], {type: 'application/json'}); 174 175 const init = { 176 "status": 200, 177 "statusText": "Ok", 178 headers: {'Content-type': 'application/json'} 179 }; 180 const response = new win.Response(resp, init); 181 Object.defineProperty(response, "url", {value: arg["url"]}); 182 // Lets wait 2 sec to get a chance to see a spinner 183 setTimeout(() => { 184 resolve(response) 185 }, 2000); 186 } 187 ) 188 } 189 } 190 191 } 192 export {fake_matrix_api_handler} 193 export default fake_matrix_api_handler