Compare commits

...
Sign in to create a new pull request.

2824 commits

Author SHA1 Message Date
Ludwig Behm
146e8e0dff Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into develop 2022-02-16 00:19:55 +01:00
David Négrier
8af7166c47
Merge pull request #1879 from lukashass/fix-comparison-always-false
fix comparison that is always false
2022-02-15 18:17:40 +01:00
Lukas Hass
cdc3d182bc
fix comparison that is always false 2022-02-15 12:00:32 +01:00
David Négrier
e801e2a435
Merge pull request #1876 from thecodingmachine/fix_pusher_header
pusher: add missing Content-Type header for json responses (2)
2022-02-15 09:25:31 +01:00
David Négrier
4bcdbcb1bd Fixing linting 2022-02-15 09:15:41 +01:00
David Négrier
897fbc1e8d
Merge pull request #1875 from thecodingmachine/dependabot/npm_and_yarn/tests/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8 in /tests
2022-02-14 22:04:53 +01:00
David Négrier
c2129b3d05
Merge pull request #1860 from thecodingmachine/dependabot/npm_and_yarn/pusher/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8 in /pusher
2022-02-14 22:04:43 +01:00
David Négrier
ceb5682f81
Merge pull request #1859 from thecodingmachine/dependabot/npm_and_yarn/back/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8 in /back
2022-02-14 22:04:34 +01:00
David Négrier
8c8fdb9ee0
Merge pull request #1858 from thecodingmachine/dependabot/npm_and_yarn/front/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8 in /front
2022-02-14 22:04:22 +01:00
dependabot[bot]
73e20c3a24
Bump follow-redirects from 1.14.7 to 1.14.8 in /tests
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 17:46:49 +00:00
David Négrier
7a44f3dcb8
Merge pull request #1853 from anbraten/remove-external-deps
Bundle nes.css and quill-js
2022-02-14 18:46:19 +01:00
David Négrier
9b15ce546e
Merge pull request #1864 from thecodingmachine/translate_visiting_card
Adding a missing translation for "Visiting card"
2022-02-14 16:46:25 +01:00
David Négrier
9bfce8412a Adding a missing translation for "Visiting card"
Also, changing "Visiting Card" to "Business Card" in English
2022-02-14 16:00:53 +01:00
David Négrier
0b095eb85c
Merge pull request #1855 from Lurkars/i18n-de-DE
update de-DE translations.
2022-02-14 11:38:26 +01:00
David Négrier
d0af766394 Adding missing reference to Camera doc 2022-02-14 09:07:37 +01:00
Ludwig Behm
9073024b1d
pusher: add missing Content-Type header for json responses 2022-02-14 00:53:38 +01:00
Ludwig Behm
2be30c101d front: rename title and description
make clear distinction that this app isn't the official WorkAdventure
make clear that this is just a WorkAdventure instance
2022-02-14 00:20:54 +01:00
dependabot[bot]
2cb7c518c1
Bump follow-redirects from 1.14.7 to 1.14.8 in /pusher
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 21:56:46 +00:00
dependabot[bot]
f9e8e0bd60
Bump follow-redirects from 1.14.7 to 1.14.8 in /back
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 20:09:24 +00:00
Anton Bracke
aef64afdb9
fix quill import 2022-02-13 20:20:38 +01:00
dependabot[bot]
c6b125b347
Bump follow-redirects from 1.14.7 to 1.14.8 in /front
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 09:55:59 +00:00
Ludwig Behm
a5a6c06b74 pusher: add missing Content-Type header for json responses 2022-02-12 22:19:48 +01:00
Lurkars
7da4fd7da6 merge latest translations 2022-02-12 14:37:25 +01:00
Ludwig Behm
9e30039551 Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into develop 2022-02-12 00:16:44 +01:00
Ludwig Behm
6b846fd793 docker: fix domain prefix for dev environment 2022-02-12 00:15:49 +01:00
David Négrier
c4d18716c3
Merge pull request #1854 from thecodingmachine/develop
Deploy 2022-02-11
2022-02-11 19:02:47 +01:00
David Négrier
55c2c2e555
Merge pull request #1843 from thecodingmachine/move-to-improvements
Move to improvements
2022-02-11 18:28:50 +01:00
David Négrier
0b82df0d41 Merge branch 'develop' of github.com:thecodingmachine/workadventure into move-to-improvements 2022-02-11 16:58:40 +01:00
Anton Bracke
948a674bb2
use correct file 2022-02-11 16:17:17 +01:00
David Négrier
80bfeb823e
Merge pull request #1852 from thecodingmachine/stabilize-cowebsite
Stabilize cowebsite
2022-02-11 16:05:19 +01:00
Anton Bracke
51f7ce10e1
remove extenal quill import 2022-02-11 15:53:52 +01:00
David Négrier
62f8a131a9 Adding translation for "Walk automatically to my position" 2022-02-11 15:52:24 +01:00
David Négrier
a91f022fd2 Making typesafe-i18n watch by default 2022-02-11 15:47:57 +01:00
Anton Bracke
3dbd83ac47
load nes.css from npm 2022-02-11 15:47:17 +01:00
David Négrier
664cce87b8 Improving rendering of share screen 2022-02-11 15:37:23 +01:00
Alexis Faizeau
5137190558 Change cowebsite closing animation 2022-02-11 15:06:41 +01:00
Ludwig Behm
65b5a3545c restuctured services and docker-compose configs 2022-02-11 01:48:25 +01:00
Alexis Faizeau
b7f4c0eecc Fix bad type base i18n translations 2022-02-10 19:30:41 +01:00
Alexis Faizeau
a5e0c2a9cf Add main cowebsite minimize indicator 2022-02-10 19:30:41 +01:00
David Négrier
e6e99c1911
Merge pull request #1844 from Lithimlin/develop
Update production templates
2022-02-10 17:34:47 +01:00
Alexis Faizeau
b0c0d22f25 Translate game map properties trigger messages 2022-02-10 17:30:03 +01:00
Alexis Faizeau
460d67534a Move all game scene game map properties listeners 2022-02-10 17:02:10 +01:00
Alexis Faizeau
aa9b5e37c7
Merge pull request #1850 from thecodingmachine/stabilize-cowebsite
Fix Jitsi co-website reloading
2022-02-10 15:50:59 +01:00
Alexis Faizeau
666b6df588 Fix Jitsi co-website reloading 2022-02-10 15:37:04 +01:00
David Négrier
3a8a622f46
Merge pull request #1848 from thecodingmachine/develop
Deploy 2022-02-10
2022-02-10 12:35:49 +01:00
David Négrier
b851dd1f52
Merge pull request #1838 from thecodingmachine/stabilize-cowebsite
Fix cowebsite closing on fast opening/closing
2022-02-10 12:16:04 +01:00
Alexis Faizeau
7b6a3949bc Move CoWebsite to generic class 2022-02-10 11:47:56 +01:00
Julian Euler
92f4728677 prod template: remove maps container
As stated by moufmouf, this is only meant for testing and hosting maps
2022-02-10 10:26:46 +01:00
Julian Euler
5aa46f6d84 prod template: move admin api URL and remove duplicate 2022-02-10 10:18:44 +01:00
David Négrier
769d63d6eb
Merge pull request #1841 from thecodingmachine/fix-issue-1835
collisionGrid now updates on showing / hiding layers
2022-02-09 18:18:04 +01:00
Hanusiak Piotr
470e3ca1ce cr fixes #1 2022-02-09 15:15:14 +01:00
Julian Euler
f8f6b8aad9 prod templates: add contact url & openID, move vars
The old template was outdated.
Added additional explanations to variables and divided them into 
sections.
2022-02-09 14:18:03 +01:00
Julian Euler
fb65510413 update docker production templates 2022-02-09 14:11:28 +01:00
Hanusiak Piotr
c13672c9dc updated invitation link creator 2022-02-09 13:03:14 +01:00
Hanusiak Piotr
9cccdca3dc docs update 2022-02-09 11:09:20 +01:00
Hanusiak Piotr
71e18d1838 update moveTo test map 2022-02-09 11:05:43 +01:00
Hanusiak Piotr
b565080312 parse x and y position from moveTo param 2022-02-09 10:52:44 +01:00
Hanusiak Piotr
fe570c9117 moveTo object position 2022-02-09 10:17:31 +01:00
Hanusiak Piotr
20267d3483 Merge branch 'develop' into fix-issue-1835 2022-02-09 09:35:43 +01:00
Hanusiak Piotr
b32a2970e4 collisionGrid now updates on showing / hiding layers 2022-02-08 15:46:41 +01:00
David Négrier
c39f23de6f
Merge pull request #1839 from thecodingmachine/parallax-effect
Parallax effect
2022-02-08 14:07:58 +01:00
Hanusiak Piotr
9cfebecde2 parallaxx and parallaxy made optional 2022-02-08 13:32:02 +01:00
Hanusiak Piotr
57bd8783e0 scroll factor applied automatically 2022-02-08 13:17:35 +01:00
Alexis Faizeau
f5f71f32ee Fix cowebsite closing on fast opening/closing 2022-02-08 11:19:29 +01:00
Hanusiak Piotr
a53cbbff34 create test map 2022-02-08 11:04:12 +01:00
David Négrier
d72cc68c22
Merge pull request #1832 from thecodingmachine/develop
Deploy 2022-02-07
2022-02-07 18:52:14 +01:00
Alexis Faizeau
31f3b2b48e
Merge pull request #1834 from thecodingmachine/stabilize-cowebsite
Remove priority on iframe add to cowebsites
2022-02-07 18:42:52 +01:00
Alexis Faizeau
7334d59c4f Remove priority on iframe add to cowebsites 2022-02-07 18:41:24 +01:00
David Négrier
3953b78cfe
Merge pull request #1823 from lukashass/fix-vscode-prettier
Remove explicit definition of prettier-plugin-svelte
2022-02-07 18:39:32 +01:00
Alexis Faizeau
5dc3fbcce5
Merge pull request #1833 from thecodingmachine/stabilize-cowebsite
Fix multi cowebsite creation by trigger
2022-02-07 18:24:04 +01:00
Alexis Faizeau
c770846558 Fix multi cowebsite creation by trigger 2022-02-07 18:23:02 +01:00
David Négrier
41183e8bc2
Merge pull request #1828 from thecodingmachine/stabilize-cowebsite
Restore trigger message action on co-websites
2022-02-07 17:58:44 +01:00
Alexis Faizeau
e51300e850 Add cowebsite percentWidth property to the documention 2022-02-07 17:53:36 +01:00
Ludwig Behm
8e77e85749 front: revert animated loading screen logo 2022-02-07 17:51:25 +01:00
Alexis Faizeau
21c198a882
Merge pull request #1831 from thecodingmachine/fix-language-display
Somes bugs due to i18n implementation
2022-02-07 17:33:59 +01:00
Alexis Faizeau
433d3a20c6 Fix raw html not displayed buy terms translation key 2022-02-07 17:32:05 +01:00
Alexis Faizeau
c2da4c3906 Fix active custom menu button 2022-02-07 17:25:55 +01:00
Alexis Faizeau
75d42209f4 Hide main cowebsite 2022-02-07 17:09:52 +01:00
Alexis Faizeau
60c17ecea2 Re-implement set width of main cowebsite 2022-02-07 14:55:51 +01:00
David Négrier
cffafe9f15
Merge pull request #1827 from thecodingmachine/activatable-fixes
Activatable fixes
2022-02-07 14:39:40 +01:00
Hanusiak Piotr
c29ce6e9a9 prettier 2022-02-07 14:23:34 +01:00
Hanusiak Piotr
d480150728 cleaner approach to disable activatablesManager distance check if space-event 2022-02-07 14:22:43 +01:00
Hanusiak Piotr
81272fbb3c yarn.lock update 2022-02-07 13:47:33 +01:00
Hanusiak Piotr
4bae6e75b1 enable activating by distance if in JITSI and JITSI was already opened 2022-02-07 12:37:59 +01:00
Hanusiak Piotr
aec7790875 disable activation by distance if in JITSI 2022-02-07 12:36:33 +01:00
Alexis Faizeau
9571a52f1e Re-implement action message on cowebsite trigger 2022-02-07 11:21:04 +01:00
Hanusiak Piotr
bf0d2eb412 directional shift for current player when trying to activate entities 2022-02-07 11:08:52 +01:00
Hanusiak Piotr
72b4438d1e outline color is decided from particular system level 2022-02-07 10:39:03 +01:00
Alexis Faizeau
862c502bea
Merge pull request #1824 from thecodingmachine/fix-focus-iframe
Fix game unfocusable after clicking on iframe
2022-02-04 14:59:15 +01:00
Alexis Faizeau
6863fa3764 Fix game unfocusable after clicking on iframe 2022-02-04 14:46:57 +01:00
Ludwig Behm
f910c833dd front: added animated Loader logo 2022-02-04 04:26:11 +01:00
Ludwig Behm
f175a7c8ed
front: replace main menu icon with kraut world icon 2022-02-04 01:05:23 +01:00
Ludwig Behm
0cd0f5acc0
Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into develop 2022-02-04 00:41:26 +01:00
Ludwig Behm
2c1b5a90ea
front: remove instance name from jitsi room names if global 2022-02-04 00:35:53 +01:00
Lukas Hass
de5a505296
remove explicit definition of prettier-plugin-svelte
fixes prettier in vscode
2022-02-03 19:26:25 +01:00
David Négrier
89f9badb70
Merge pull request #1821 from thecodingmachine/develop
Deploy 2022-02-03
2022-02-03 18:33:02 +01:00
Alexis Faizeau
2232f7caf4
Merge pull request #1819 from thecodingmachine/fix-cowebsite
Fix display of co-website thumbnail
2022-02-03 18:20:50 +01:00
Alexis Faizeau
137bd831a9 Fix main cowebsite switcher 2022-02-03 15:20:30 +01:00
Alexis Faizeau
b91de4a91d Replace favicon by meet icon on jitsi cowebsite thumbnail 2022-02-03 15:03:42 +01:00
Alexis Faizeau
1b93bf666f Remove translate from warning message 2022-02-03 14:38:53 +01:00
David Négrier
c34ee73448
Merge pull request #1813 from thecodingmachine/fix-cowebsite
Fix mozaic layout
2022-02-03 11:44:23 +01:00
Alexis Faizeau
7e9343f1b7 Fix mozaic layout 2022-02-03 11:17:11 +01:00
Alexis Faizeau
4a9cc57d60 Cancelable companion resource 2022-02-03 11:17:11 +01:00
David Négrier
9696b0ab04
Merge pull request #1818 from thecodingmachine/fix-character-collider
applied proper offset for circle collider of Character
2022-02-03 10:25:42 +01:00
David Négrier
be2727f5c4
Merge pull request #1817 from thecodingmachine/fix-interaction
fixed actions-menu not appearing
2022-02-03 10:13:36 +01:00
Hanusiak Piotr
010c176708 applied proper offset for circle collider of Character 2022-02-03 10:13:17 +01:00
Hanusiak Piotr
be60d0ef03 fixed actions-menu not appearing 2022-02-03 09:50:52 +01:00
Ludwig Behm
57d2535bc2 set NODE_ENV to production 2022-02-03 02:42:36 +01:00
tabascoeye
ddbda8f267 Remove all weapons from the character select 2022-02-03 02:10:53 +01:00
¯\_(ツ)_/¯
e368067462 Characters, clothes and accessories from rc3 2022-02-03 02:02:45 +01:00
tabascoeye
ebd4bae452 Add companions from rC3
Thanks to TabascoEye, MikeTango, deinkoks and possibly others. :-)
2022-02-03 02:02:23 +01:00
Ludwig Behm
5fa91b2de8 new environment variable DEFAULT_LOCALE exposed to docker 2022-02-03 02:02:16 +01:00
Ludwig Behm
5fb9a3e6c3 pusher: add a /metrics.json endpoint 2022-02-03 01:17:27 +01:00
PizZaKatZe
5b233a6c48 Set default game FPS to 20 2022-02-02 23:49:41 +01:00
Ludwig Behm
40c05a7905 back: add a /metrics.json endpoint 2022-02-02 23:47:36 +01:00
Ludwig Behm
456c2ffab5 Add docker-compose.yaml for kraut.world 2022-02-02 23:27:04 +01:00
PizZaKatZe
185d3b58ed Pusher federation
Source: https://gist.github.com/jstsmthrgk/2c82124c9ac2bd453658f52c90b8dd44
2022-02-02 22:48:19 +01:00
David Négrier
603d60b83e
Merge pull request #1814 from thecodingmachine/develop
Deploy 2022-02-02
2022-02-02 19:19:00 +01:00
David Négrier
f1c999ffc1
Merge pull request #1815 from thecodingmachine/right-click-movement
move with touch or right click
2022-02-02 18:34:36 +01:00
Hanusiak Piotr
4b7278b843 add brackets to the condition 2022-02-02 16:42:38 +01:00
Hanusiak Piotr
a7b0516ac4 move with touch or right click 2022-02-02 16:38:43 +01:00
David Négrier
272b43106b
Merge pull request #1775 from thecodingmachine/feature-options-menu
Feature options menu
2022-02-02 14:10:38 +01:00
Hanusiak Piotr
45a7e9331b ran prettier 2022-02-02 13:30:49 +01:00
Hanusiak Piotr
0eaeaf7cfb Merge branch 'develop' into feature-options-menu 2022-02-02 09:31:10 +01:00
David Négrier
95b471f809
Merge pull request #1812 from thecodingmachine/develop
Deploy 2022-02-01
2022-02-01 19:01:26 +01:00
Alexis Faizeau
8bd0d648d4
Merge pull request #1811 from thecodingmachine/visual-cowebsite-icon
Enhance UX co-website opening
2022-02-01 18:52:46 +01:00
Alexis Faizeau
33e1a369de Add trigger message on cowebsite alt 2022-02-01 18:42:07 +01:00
David Négrier
45fe234d00
Merge pull request #1804 from thecodingmachine/fix-customize-woka-missing-buttons
removed unnecessary wake event unregistering
2022-02-01 18:15:19 +01:00
Alexis Faizeau
331068c965
Merge pull request #1809 from thecodingmachine/fix-errors
Fix cowebsite lazy load by API
2022-02-01 17:56:48 +01:00
Alexis Faizeau
7e966a7381 Animate cowebsite icons 2022-02-01 17:52:10 +01:00
Alexis Faizeau
da381e6e16 Fix cowebsite lazy load by API 2022-02-01 17:25:53 +01:00
grégoire parant
bc03182129
Merge pull request #1807 from thecodingmachine/fix-safari-bug-joystick
fixed bugged safari's joystick
2022-02-01 16:42:45 +01:00
Hanusiak Piotr
43b821a4f2 fixed canvasBounds being wrongly calculated due to the resize / setZoom execution order 2022-02-01 15:49:23 +01:00
Alexis Faizeau
5337f0dda2
Merge pull request #1803 from thecodingmachine/fix-errors
Implement cancelable woka resource
2022-02-01 15:26:08 +01:00
Alexis Faizeau
1124ed5a5e Implement cancelable woka resource 2022-02-01 15:17:04 +01:00
Hanusiak Piotr
27b7bb0dca removed unnecessary wake event unregistering 2022-02-01 12:55:29 +01:00
Alexis Faizeau
315e2f6417
Merge pull request #1800 from thecodingmachine/fix-my-cam
Define max height on streamable
2022-01-31 14:29:42 +01:00
Nolway
541aa78a1f Define max height on streamable 2022-01-31 14:29:01 +01:00
Hanusiak Piotr
a448015196 removed non existing test from WA test cases 2022-01-31 13:04:28 +01:00
Hanusiak Piotr
c3d04efe9b removed mock action from RemotePlayer 2022-01-31 13:01:47 +01:00
Hanusiak Piotr
989897cb01 added isActivatable() method to implement through interface 2022-01-31 13:00:14 +01:00
Alexis Faizeau
4210334aa2
Merge pull request #1798 from thecodingmachine/fix-my-cam
Fix bugs on new camera display
2022-01-31 12:57:03 +01:00
Hanusiak Piotr
2322f5f76d some improvements with registering menu actions 2022-01-31 12:26:37 +01:00
Nolway
965725dd71 Remove border radius on video elements 2022-01-31 11:58:12 +01:00
Nolway
feeb20fb5d Prettier fixes into video management 2022-01-31 11:50:07 +01:00
Nolway
d2bfa75b37 Video peer without stream can be highlighted 2022-01-31 11:48:12 +01:00
Nolway
50b752a205 Fix streamable display after left a group 2022-01-31 11:41:30 +01:00
Nolway
4400c79b93 Fix local streamable toggle highlighted 2022-01-31 11:40:16 +01:00
Hanusiak Piotr
5aba99403e merged develop 2022-01-31 10:00:39 +01:00
grégoire parant
462cb53101
Merge pull request #1793 from thecodingmachine/fix_redirect_lastroomurl
Fix redirect error after invalid token
2022-01-29 14:16:34 +01:00
Gregoire Parant
d590b81446 Fix redirect error after invalid token
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-29 14:05:05 +01:00
grégoire parant
561fbd7bec
Merge pull request #1790 from thecodingmachine/fix_screensharing_spinner
Fix screensharing spinner
2022-01-28 19:50:31 +01:00
Gregoire Parant
60b6bc6f75 Updating of warning message when we try to close screen sharing
Trying to close screen sharing is alway process when a peer connection is closed.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-28 19:34:15 +01:00
Gregoire Parant
31b7b5aa08 Add name on screen sharing
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-28 19:17:40 +01:00
Gregoire Parant
15be76655f Add todo to improve status management
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-28 18:42:48 +01:00
Gregoire Parant
dfd594ec17 Fix screen sharing spinner
Check if the peer connection is already connected status. In this case, the status store must be set to 'connected'.
In the case or player A send stream and player B send a stream, it's same peer connection, also the status must be changed to connect.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-28 18:33:42 +01:00
Alexis Faizeau
34c077f470
Merge pull request #1789 from thecodingmachine/fix-errors
Fix i18n error message
2022-01-28 15:47:07 +01:00
grégoire parant
790c7175cf
Merge pull request #1785 from thecodingmachine/fix_camera_light
Remove hideMyCamera function, not working correctly
2022-01-28 15:25:56 +01:00
Alexis Faizeau
bea99711e4 Fix i18n error message 2022-01-28 15:11:57 +01:00
Gregoire Parant
fc8330a3ad Remove hideMyCamera function, not working correctly
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-28 12:01:58 +01:00
David Négrier
673a18864d
Merge pull request #1784 from thecodingmachine/fix_user_walking_infinitely
Fixing users walking infinitely
2022-01-28 11:20:37 +01:00
David Négrier
9a7140b027 Fixing users walking infinitely
Now, if no event is received from the Pusher after MAX_EXTRAPOLATION_TIME, the
moving variable of the user is set to false.

So if a client does not send an update on time (for instance if the user switched
tab while walking), on the screen of others, the woka will appear to stop.
2022-01-28 11:10:47 +01:00
David Négrier
dd920c96db Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2022-01-28 10:16:59 +01:00
David Négrier
f602833c73
Merge pull request #1783 from thecodingmachine/fix_freeze_on_mapstore
Fixing a freeze in MapStore on several unsubscribes
2022-01-28 10:16:42 +01:00
grégoire parant
b831ad3c9e
Merge pull request #1782 from thecodingmachine/updateNameAndWokaOnVideoContainer
Change style of woka and name on video container
2022-01-28 10:10:44 +01:00
David Négrier
e43c4cd5ae Fixing a freeze in MapStore on several unsubscribes
For some reason (I could not reproduce this in unit tests alas), the unsubscribe function
could be called several times in a row, leading to a complete map freeze.

Closes #1736
2022-01-28 09:58:24 +01:00
David Négrier
4aee41f9fd
Merge pull request #1781 from thecodingmachine/fix_link_encoding_in_chat
Fix the way links are encoded in chat
2022-01-27 23:00:37 +01:00
David Négrier
d1c549335b Fix the way links are encoded in chat
Closes #1776
2022-01-27 22:55:32 +01:00
Gregoire Parant
949b73d900 Fix style
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-27 20:33:33 +01:00
Gregoire Parant
b38081515b Change style of woka and name on video container
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-27 20:10:29 +01:00
David Négrier
f5464fb1af Fixing bad return in controller 2022-01-27 18:46:28 +01:00
David Négrier
12d6d9a50d Disabling completely routes if admin token not configured 2022-01-27 18:38:33 +01:00
David Négrier
767ac9a68f
Merge pull request #1780 from thecodingmachine/dependabot/npm_and_yarn/front/nanoid-3.2.0
Bump nanoid from 3.1.30 to 3.2.0 in /front
2022-01-27 17:05:51 +01:00
dependabot[bot]
1572ddc477
Bump nanoid from 3.1.30 to 3.2.0 in /front
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 15:50:53 +00:00
Hanusiak Piotr
099d573296 cleanup 2022-01-27 16:50:25 +01:00
Alexis Faizeau
f1a674225a
Merge pull request #1620 from thecodingmachine/embedScreens
Improve UI & Cowebsites
2022-01-27 16:50:10 +01:00
Alexis Faizeau
9efb718545 Display a loader while cowebsite icon is loading 2022-01-27 16:37:24 +01:00
Alexis Faizeau
b01b8b53eb Lowercase warning container hex colors 2022-01-27 16:34:58 +01:00
David Négrier
0dc6f41562 Fixing server name in K8S deployment 2022-01-27 16:34:58 +01:00
David Négrier
6848995639 Adding Icon server to CD env. 2022-01-27 16:34:58 +01:00
Alexis Faizeau
b9ca630a15 Jitsi cowebsite close on hangup 2022-01-27 16:34:58 +01:00
David Négrier
a4b4710f87 Menu bar for buttons 2022-01-27 16:34:58 +01:00
David Négrier
06dca9813c Removing weird border in cowebsites and cowebsite button 2022-01-27 16:34:58 +01:00
David Négrier
78e816c6fb Removing optimization in dev to get back normal compilation times in watch mode 2022-01-27 16:34:58 +01:00
David Négrier
873c335054 Removing too wide border in videos 2022-01-27 16:34:58 +01:00
Alexis Faizeau
4436db0d3d Add new cowebsite properties on documention 2022-01-27 16:34:58 +01:00
Alexis Faizeau
4f068c72be Co-website management move to Svelte 2022-01-27 16:34:58 +01:00
Alexis Faizeau
0bf1acfefb Improve game overlay UI 2022-01-27 16:34:58 +01:00
Alexis Faizeau
5f1dd09cb9 Implement minimizer for css/scss 2022-01-27 16:34:58 +01:00
Alexis Faizeau
9695064e82 Implement breakpoints utils on SCSS and JS 2022-01-27 16:34:58 +01:00
Alexis Faizeau
56d8f62dd0 Add a new test map for co-website with trigger property 2022-01-27 16:33:11 +01:00
Alexis Faizeau
d7121d4192 Add fonts & png files built to the gitignore file 2022-01-27 16:33:11 +01:00
David Négrier
89ba62c898
Merge pull request #1748 from thecodingmachine/pre-compile-front
Pre-compile frontend and add environment config script (2)
2022-01-27 16:00:59 +01:00
David Négrier
d18e9162b9 Generating i18n files before build 2022-01-27 15:51:23 +01:00
David Négrier
d1a88dd375 Merge branch 'develop' of github.com:thecodingmachine/workadventure into pre-compile-front 2022-01-27 15:41:51 +01:00
Hanusiak Piotr
8b8c24f6ef ActivatablesManager and little cleanup 2022-01-27 15:15:18 +01:00
Hanusiak Piotr
68c4a5f5ce different approach 2022-01-27 14:05:30 +01:00
David Négrier
fe031579d9
Fixing typo 2022-01-27 10:24:19 +01:00
Hanusiak Piotr
2781b72799 wip with handling outlines for activitable objects 2022-01-26 17:14:22 +01:00
Hanusiak Piotr
b88ebbdf08 update distance values on remotePlayer movement 2022-01-26 15:38:08 +01:00
Hanusiak Piotr
dbd06bda4e changing the way Outline is handled 2022-01-26 14:59:23 +01:00
Alexis Faizeau
fbb67c04fe
Merge pull request #1760 from Lurkars/i18n-de-DE
de-DE german translation (+ small improvement)
2022-01-26 14:40:57 +01:00
Hanusiak Piotr
f42c7564b9 call activate() method on space key up 2022-01-26 13:16:52 +01:00
Hanusiak Piotr
3af6461c01 Activatable objects handling WIP 2022-01-26 12:57:10 +01:00
Lurkars
2252bc79ff prettier 2022-01-26 12:39:20 +01:00
Lurkars
c4e5a41376 add emoji translation 2022-01-26 12:34:51 +01:00
Lurkars
15a2b7fe02 Merge branch 'develop' of github.com:thecodingmachine/workadventure into i18n-de-DE 2022-01-26 12:33:11 +01:00
grégoire parant
7ef2bdaad4
Merge pull request #1756 from thecodingmachine/emoji-menu-text
Enhance emoji menu
2022-01-26 11:55:19 +01:00
Hanusiak Piotr
5ae039b987 little cleanup 2022-01-26 10:54:51 +01:00
Lurkars
8858fccd18 fix Translation 2022-01-26 10:46:42 +01:00
Hanusiak Piotr
06d403ebe3 simplify actionsMenu 2022-01-26 10:40:13 +01:00
Lurkars
a808819a11 fix de-DE index.js 2022-01-26 10:38:40 +01:00
Lurkars
a55e5373fc added de-DE translation, fix quality small vs. minimum 2022-01-26 10:33:07 +01:00
David Négrier
2cf51a058a
Merge pull request #1757 from ValdoTR/typos
Fixed some typos :)
2022-01-25 21:06:24 +01:00
Valdo Romao
aefb28d895 Fixed some typos :) 2022-01-25 19:43:27 +00:00
Lukas Hass
78a020576f
Add FALLBACK_LOCALE to config template 2022-01-25 18:04:59 +01:00
Lukas Hass
4108076373
Merge branch 'develop' into pre-compile-front 2022-01-25 18:02:04 +01:00
Alexis Faizeau
30ebb90617 Enchance emoji menu 2022-01-25 17:42:43 +01:00
Hanusiak Piotr
58227a39f8 destroy actionsMenu on RemotePlayer destroy() 2022-01-25 17:13:52 +01:00
Hanusiak Piotr
88f3032298 do not move player if clicked on Player or RemotePlayer. Close actionsMenu on second click 2022-01-25 15:47:21 +01:00
Hanusiak Piotr
907026463d scrollable actions 2022-01-25 15:09:34 +01:00
David Négrier
dc09a92fd0
Merge pull request #1753 from thecodingmachine/dependabot/npm_and_yarn/pusher/node-fetch-2.6.7
Bump node-fetch from 2.6.1 to 2.6.7 in /pusher
2022-01-25 14:13:29 +01:00
David Négrier
24bd23c0f2
Merge pull request #1752 from thecodingmachine/dependabot/npm_and_yarn/back/node-fetch-2.6.7
Bump node-fetch from 2.6.6 to 2.6.7 in /back
2022-01-25 14:13:17 +01:00
David Négrier
ef2f8b141f
Merge pull request #1743 from thecodingmachine/move-to-from-hash-parameter
Move to from hash parameter
2022-01-25 14:12:26 +01:00
Hanusiak Piotr
67627637aa added store with actions for actionsMenu 2022-01-25 13:42:41 +01:00
grégoire parant
af08337810
Merge pull request #1754 from thecodingmachine/ChangeWarningBannerColor
Change Warning Container with yellow color
2022-01-25 13:04:08 +01:00
Gregoire Parant
9c381d1a07 Fix yarn pretty
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-25 11:52:31 +01:00
Gregoire Parant
7a7addb061 Change Warning Container with Yellow color
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-25 11:37:29 +01:00
Hanusiak Piotr
90a76e9f04 fixed layer name in docs 2022-01-25 11:03:58 +01:00
Piotr Hanusiak
1ca56efd42
Update docs/maps/entry-exit.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-25 10:58:59 +01:00
Hanusiak Piotr
69a2379e53 Merge branch 'develop' into feature-options-menu 2022-01-25 10:33:30 +01:00
Hanusiak Piotr
40366eb070 readme update 2022-01-25 10:20:21 +01:00
Hanusiak Piotr
934a59e59f improved way of getting hash parameters 2022-01-25 10:05:04 +01:00
Alexis Faizeau
2312d2e129
Merge pull request #1629 from thecodingmachine/translator
Translator: i18n
2022-01-25 09:48:48 +01:00
Alexis Faizeau
fdec12d311 Generate i18n files on ci/cd 2022-01-24 18:59:28 +01:00
Alexis Faizeau
446b4639c7 Implement typesafe-i18n 2022-01-24 18:59:28 +01:00
dependabot[bot]
6684c87efa
Bump node-fetch from 2.6.1 to 2.6.7 in /pusher
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 16:54:59 +00:00
dependabot[bot]
baf1453e14
Bump node-fetch from 2.6.6 to 2.6.7 in /back
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.6 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.6...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 16:54:52 +00:00
David Négrier
5e27688f93
Merge pull request #1746 from thecodingmachine/dependabot/npm_and_yarn/front/nanoid-3.2.0
Bump nanoid from 3.1.23 to 3.2.0 in /front
2022-01-24 17:54:23 +01:00
David Négrier
03b8de23d2
Merge pull request #1751 from thecodingmachine/fix-name-brave
Display correctly the username on Brave browser
2022-01-24 17:53:58 +01:00
Hanusiak Piotr
b5887bceb4 PR fixes 2022-01-24 17:03:14 +01:00
Alexis Faizeau
4829964127 Display correctly the username on Brave browser 2022-01-24 16:55:58 +01:00
Hanusiak Piotr
3cc38e6bbe Merge branch 'develop' into move-to-from-hash-parameter 2022-01-24 16:31:03 +01:00
Hanusiak Piotr
fd012d6c69 ActionsMenu WIP 2022-01-24 16:27:57 +01:00
Lukas Hass
6f24780874
Allow returning empty strings 2022-01-24 11:54:00 +01:00
Lukas Hass
7863774dca
Return value from process.env if it exists 2022-01-24 11:53:01 +01:00
Lukas Hass
00464f7144
Test for window existence on global object
This fixes running tests in Jasmine where window not defined
2022-01-24 11:29:26 +01:00
Lukas Hass
605765a86f
Check in env config template 2022-01-24 11:26:49 +01:00
Lukas Hass
8c1f9e1ac7
Fix cp path 2022-01-23 15:17:53 +01:00
David Négrier
ad2dd1c8d5
Merge pull request #1740 from thecodingmachine/feature-move-character-api
Feature move character api
2022-01-22 22:26:33 +01:00
David Négrier
d8327d1b72
Apply suggestions from code review
Fixing missing return attribute in doc
2022-01-22 22:20:41 +01:00
dependabot[bot]
151cdd353a
Bump nanoid from 3.1.23 to 3.2.0 in /front
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.23 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.23...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-22 03:06:53 +00:00
Lukas Hass
5dabd0b2f8
Pre-compile frontend and add environment config script 2022-01-21 21:01:34 +01:00
David Négrier
543ccb4fb6
Merge pull request #1744 from thecodingmachine/add-unsb-doc
Add an unsubscribe on enterLayer documentation
2022-01-21 17:34:42 +01:00
Alexis Faizeau
4eb98fa975 Add an unsubscribe on enterLayer documentation 2022-01-21 17:28:58 +01:00
David Négrier
0be77164ec Translating retry connection error message and fixing E2E tests 2022-01-21 17:09:29 +01:00
David Négrier
51c3f1d972 Refactoring translator to use "_" instead of "translator._".
This is shorter and pollutes less the code.
2022-01-21 17:09:29 +01:00
Alexis Faizeau
1789f36a63 Implement zod checking on translator compiler 2022-01-21 17:09:29 +01:00
Alexis Faizeau
68dc7c2555 Fix languageFound type error on build 2022-01-21 17:09:29 +01:00
Nolway
54ae3bf215 Add language switcher on settings 2022-01-21 17:09:29 +01:00
Nolway
6ff4d6d634 Add fr-FR translations 2022-01-21 17:09:29 +01:00
Nolway
bd01a35cc6 Add en-US translations 2022-01-21 17:09:29 +01:00
Nolway
31b92da6ce Move translate documentation 2022-01-21 17:09:29 +01:00
Nolway
41ef9fd49f Replace cookie by local storage to store language 2022-01-21 17:09:29 +01:00
Nolway
8286cdd41d Add WA.player.language in the API 2022-01-21 17:09:29 +01:00
Nolway
77f8426788 Add translator documentation 2022-01-21 17:09:29 +01:00
Nolway
8a2767ef40 Implement Translator: i18n system 2022-01-21 17:09:29 +01:00
Hanusiak Piotr
cebb803b2b added test for moveTo command 2022-01-20 15:47:49 +01:00
Hanusiak Piotr
e87c0a07a4 moveTo parameter working if layer is found 2022-01-20 15:10:54 +01:00
Hanusiak Piotr
cb0c5beecf get additional hash parameters from url 2022-01-20 14:14:24 +01:00
Hanusiak Piotr
dd03a2d1ff Merge branch 'develop' into feature-move-character-api 2022-01-20 13:00:31 +01:00
Hanusiak Piotr
72c7eae559 readme changes 2022-01-20 12:54:55 +01:00
Hanusiak Piotr
b088e63290 little fixes for moveTo example and with event return data 2022-01-20 10:04:19 +01:00
Hanusiak Piotr
bf6b9a7c83 do not call joystick logic if not on mobile 2022-01-20 09:39:41 +01:00
David Négrier
5f62894d56
Merge pull request #1711 from thecodingmachine/e2e_fix_try
Trying to make E2E tests more stable
2022-01-19 21:57:16 +01:00
David Négrier
7ff5b32557 Improving instance type 2022-01-19 21:47:06 +01:00
David Négrier
4dac3d0100 Update testcafe 2022-01-19 21:15:36 +01:00
David Négrier
35e44a92b9 Updating Dockerfile testcafe version 2022-01-19 21:11:35 +01:00
David Négrier
ca6fdb9025 Trying to make E2E tests more stable 2022-01-19 21:11:35 +01:00
David Négrier
6a9bd08893 Updating Node builder version 2022-01-19 21:09:57 +01:00
Hanusiak Piotr
62b00f852d throw an exception if no path found when using player.moveTo command. Cancelling path following no longer rejects the promise 2022-01-19 17:22:28 +01:00
David Négrier
0409422a44
Merge pull request #1732 from thecodingmachine/remove-last-message
Remove the last message before adding a new chat peer
2022-01-19 15:51:05 +01:00
David Négrier
fd88399938
Simplifying if condition 2022-01-19 15:45:16 +01:00
Alexis Faizeau
30811e7702 Remove the last message before add a new chat peer 2022-01-19 15:44:12 +01:00
David Négrier
1e3c81617f
Merge pull request #1735 from thecodingmachine/walking-shortest-path
Walking shortest path on click
2022-01-19 15:34:49 +01:00
Hanusiak Piotr
ef02a06ad7 more details to the readme 2022-01-19 15:32:26 +01:00
Hanusiak Piotr
e70289c61d add WA.player.moveTo command to the readme 2022-01-19 15:28:49 +01:00
Hanusiak Piotr
8f40e7a33c reject path following path promise if interrupted 2022-01-19 14:16:05 +01:00
Hanusiak Piotr
c023c4f8fd optional following path movement speed 2022-01-19 13:53:06 +01:00
Hanusiak Piotr
9b94705177 manually resolve promise on certain events for player path following 2022-01-19 13:09:17 +01:00
Hanusiak Piotr
f78392ceab Pathfinding manager will now return path steps in pixel units by default 2022-01-19 12:30:08 +01:00
Hanusiak Piotr
f96eac4737 Merge branch 'walking-shortest-path' into feature-move-character-api 2022-01-19 10:54:19 +01:00
Hanusiak Piotr
9e5d8f5d9c cr fixes 2022-01-19 10:37:56 +01:00
Hanusiak Piotr
29e44d3023 Player move API wip 2022-01-19 09:34:06 +01:00
David Négrier
a2b52a2876
Merge pull request #1733 from thecodingmachine/dependabot/npm_and_yarn/messages/shelljs-0.8.5
Bump shelljs from 0.8.4 to 0.8.5 in /messages
2022-01-19 09:05:06 +01:00
Hanusiak Piotr
e0e1a7e76a Merge branch 'develop' into walking-shortest-path 2022-01-18 12:37:27 +01:00
Hanusiak Piotr
1c4e803dd7 move to the nearest tile if possible 2022-01-18 12:33:46 +01:00
Hanusiak Piotr
67cd0dfb29 disable context menu. Move player only on left-click 2022-01-18 11:18:52 +01:00
Hanusiak Piotr
391fe7eed3 for pathfinding we are now taking into consideration all tiles, looking for 'collides' property 2022-01-18 10:26:40 +01:00
David Négrier
0d4befc850
Merge pull request #1731 from thecodingmachine/fix-group-master
Change group radius management
2022-01-17 18:16:36 +01:00
Hanusiak Piotr
7576cea7e0 removed obsolete comments. Pass path as reference 2022-01-17 16:11:08 +01:00
Hanusiak Piotr
3e81278e72 proper player movement on click 2022-01-17 16:04:59 +01:00
Hanusiak Piotr
e557e8ea72 player following the path wip 2022-01-17 14:36:00 +01:00
Hanusiak Piotr
77ee39110f handle pointerup event 2022-01-17 11:52:02 +01:00
Hanusiak Piotr
28543be121 Player class is no longer dependent on UserInputManager 2022-01-17 11:37:28 +01:00
Hanusiak Piotr
173d10738d created interface to implement for UserInputManager 2022-01-17 11:16:42 +01:00
dependabot[bot]
5b186c1bba
Bump shelljs from 0.8.4 to 0.8.5 in /messages
Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/shelljs/shelljs/releases)
- [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/shelljs/shelljs/compare/v0.8.4...v0.8.5)

---
updated-dependencies:
- dependency-name: shelljs
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-15 06:59:54 +00:00
Alexis Faizeau
4a5ef4ab86 Change group radius management 2022-01-14 13:54:55 +01:00
David Négrier
ccfe049e6c
Merge pull request #1723 from thecodingmachine/fix-group
Change group radius management
2022-01-14 13:53:15 +01:00
David Négrier
6269ba997b
Merge pull request #1730 from thecodingmachine/camera-api-docs-update
api-camera docs update
2022-01-14 13:17:52 +01:00
Hanusiak Piotr
b1cad1e5d3 merged develop 2022-01-14 12:52:04 +01:00
Hanusiak Piotr
000b2cfe73 created PathfindingManager. WIP 2022-01-14 12:49:18 +01:00
Hanusiak Piotr
a344d8c2bc api-camera docs update 2022-01-14 12:38:16 +01:00
David Négrier
82c2d21423
Merge pull request #1654 from thecodingmachine/feature-camera-management
Feature camera management
2022-01-14 11:57:05 +01:00
Alexis Faizeau
cd566e43a7 Change group radius management 2022-01-14 11:53:33 +01:00
Hanusiak Piotr
7ee41bad30 change setViewport action to set for CameraAPI 2022-01-14 11:41:37 +01:00
Hanusiak Piotr
17e9c3c586 handle instant camera view change 2022-01-14 11:31:49 +01:00
David Négrier
391c34d0c9
Merge pull request #1729 from thecodingmachine/dependabot/npm_and_yarn/pusher/follow-redirects-1.14.7
Bump follow-redirects from 1.14.4 to 1.14.7 in /pusher
2022-01-14 10:43:18 +01:00
David Négrier
0abdf9faf8 Merge pull request #1728 from thecodingmachine/dependabot/npm_and_yarn/back/follow-redirects-1.14.7
Bump follow-redirects from 1.14.6 to 1.14.7 in /back
2022-01-14 10:43:08 +01:00
dependabot[bot]
201d804d98
Bump follow-redirects from 1.14.4 to 1.14.7 in /pusher
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.4 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.4...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 09:27:12 +00:00
dependabot[bot]
57b2b4e9fe
Bump follow-redirects from 1.14.6 to 1.14.7 in /back
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.6 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.6...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 09:27:10 +00:00
David Négrier
f39f13b2dd
Merge pull request #1727 from thecodingmachine/dependabot/npm_and_yarn/front/follow-redirects-1.14.7
Bump follow-redirects from 1.14.4 to 1.14.7 in /front
2022-01-14 10:26:39 +01:00
dependabot[bot]
8c11db1f62
Bump follow-redirects from 1.14.4 to 1.14.7 in /front
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.4 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.4...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 07:50:10 +00:00
Hanusiak Piotr
c2b2385e96 Camera now centers on focusable zone properly 2022-01-13 18:54:38 +01:00
Hanusiak Piotr
fa2bf25d8b Merge branch 'walking-shortest-path' of github.com:thecodingmachine/workadventure into walking-shortest-path 2022-01-13 17:13:15 +01:00
Hanusiak Piotr
49247ac530 created PathfindingManager. WIP 2022-01-13 17:13:03 +01:00
Hanusiak Piotr
a164cedf3f Camera FocusTarget width and height are now optional 2022-01-13 16:43:58 +01:00
Hanusiak Piotr
d99930a67e save last zoom value if setting the camera viewport without locking it 2022-01-13 16:17:49 +01:00
Hanusiak Piotr
d62b116e5d merge setPosition and focusOn into setViewport 2022-01-13 16:08:16 +01:00
David Négrier
57d2dec756
Merge pull request #1724 from thecodingmachine/master
Backport fix 2022-01-13
2022-01-13 15:59:54 +01:00
Hanusiak Piotr
a1c96b0524 merged develop 2022-01-13 10:44:06 +01:00
David Négrier
7b08429db3
Merge pull request #1719 from thecodingmachine/focusable-zone-allow-zoom
Focusable zone allow zoom
2022-01-12 18:51:17 +01:00
David Négrier
242411889a
Merge pull request #1722 from thecodingmachine/allow_disabling_modules
Adding a new property to prevent script from being loaded in "modules" mode
2022-01-12 18:49:00 +01:00
David Négrier
9425fd70c0 Adding a new property to prevent script from being loaded in "modules" mode
Scripts in module mode need to be abide by the Same Origin Policy (CORS headers are used to load them)
This can cause issues on some setups.

This commit adds a new "scriptDisableModuleSupport" that can be used to disable the "modules" mode.

Closes #1721
2022-01-12 17:36:31 +01:00
Hanusiak Piotr
d772fd27f8 created PathfindingManager. WIP 2022-01-12 17:13:37 +01:00
Hanusiak Piotr
905bd079ec camera is now properly focusing on target when zooming, if any 2022-01-12 12:58:27 +01:00
Hanusiak Piotr
58af1f05f7 unlocking zooming with a delay when entering / leaving focusable zone 2022-01-12 12:08:11 +01:00
Alexis Faizeau
3f3f488924
Merge pull request #1718 from thecodingmachine/master
Hot fixes
2022-01-12 10:47:27 +01:00
grégoire parant
55da4d5f20
Merge pull request #1717 from thecodingmachine/HotFixHtaccess
HotFix htaccess to accespt "*"
2022-01-12 08:39:55 +01:00
Gregoire Parant
2f4e518f17 HotFix Htaccess to accespt "*"
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-12 08:20:54 +01:00
David Négrier
376af7d28d
Merge pull request #1714 from jonnytest1/hash-reset
always set hash
2022-01-10 17:39:13 +01:00
jonny
786448a2b2 prettier fix 2022-01-09 23:21:07 +01:00
jonny
73ab4f3a26 prettier fix 2022-01-09 23:18:38 +01:00
jonny
e5afac1df5 prettier fix 2022-01-09 23:17:17 +01:00
David Négrier
e298a35efb
Merge pull request #1712 from albanbruder/fix-dump-serialization
Fix circular serialization in pusher dump endpoint
2022-01-09 22:39:38 +01:00
jonny
954d39bb0c always set hash 2022-01-09 13:51:44 +01:00
Alban Bruder
4a78e449df Fix circular serialization in pusher dump endpoint 2022-01-07 14:37:44 +01:00
David Négrier
adac0df05d
Merge pull request #1710 from thecodingmachine/fix_startup
Fix pusher and back locked
2022-01-06 19:29:21 +01:00
David Négrier
996adc6b59 Fix pusher and back locked
Due to the "messages" container changing .ts files at the very same time Typescript is compiling, ts-node-dev can end up in a "locked" state.
This is a bug in ts-node-dev.

To avoid issues, I am adding a small 5 seconds delay in pusher and back startup. This should allow (at least on my hardware) enough time for messages to be generated.
2022-01-06 18:53:45 +01:00
David Négrier
201332bfc8
Merge pull request #1709 from thecodingmachine/fix_close_webites
Fixing closing of all websites.
2022-01-06 18:25:13 +01:00
David Négrier
0fb09cc431 Fixing closing of all websites. 2022-01-06 12:27:00 +01:00
David Négrier
787cc508b8
Merge pull request #1708 from thecodingmachine/fix_firefox_private_browsing
Fixing WA crashing in Firefox private mode
2022-01-06 11:57:12 +01:00
David Négrier
d713c82568 Fixing WA crashing in Firefox private mode
Due to the way we now handle the browser cache, previously ignored errors in the Cache API were now explicitly thrown, preventing the loading of Firefox in private mode.
This commit fixes the issue and improves the stacktrace display of errors at the same time.
2022-01-06 11:55:43 +01:00
David Négrier
4257604229
Merge pull request #1707 from thecodingmachine/no_thow_literals
Stopping sending literal errors
2022-01-06 11:46:50 +01:00
David Négrier
ab0f5e9837 Stopping sending literal errors
Errors now must be of "Error" type.
Rule added in eslint.
2022-01-06 10:52:06 +01:00
David Négrier
88509916a8
Merge pull request #1702 from thecodingmachine/develop
Deploy 2022-01-04
2022-01-05 22:35:44 +01:00
David Négrier
c46882e099
Merge pull request #1672 from thecodingmachine/2daysLimit
2 days limit
2022-01-05 17:42:01 +01:00
David Négrier
d24e074fbf
Merge pull request #1703 from thecodingmachine/2daysLimit_stupid_front
2 days limit improvements
2022-01-05 16:36:57 +01:00
David Négrier
f82012d315 Flagging Room.isPublic property as deprecated 2022-01-05 16:30:41 +01:00
David Négrier
6766ee86da Merge branch '2daysLimit' of github.com:thecodingmachine/workadventure into 2daysLimit 2022-01-05 14:32:17 +01:00
David Négrier
968e71cbca Removing completely any analysis of the URL from the front.
Instead, data related to room is sent from the admin, via the pusher.
2022-01-05 14:32:02 +01:00
Gregoire Parant
229bf2480c Merge branch 'develop' into 2daysLimit
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Connexion/RoomConnection.ts
2022-01-05 12:14:59 +01:00
Gregoire Parant
08847e1a64 Merge branch 'develop' into 2daysLimit
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Connexion/RoomConnection.ts
2022-01-05 12:08:27 +01:00
Gregoire Parant
ae122261d4 Fix prettier update
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-05 11:49:01 +01:00
Gregoire Parant
8b758a0053 Merge branch 'develop' into 2daysLimit
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2022-01-05 11:47:31 +01:00
David Négrier
c85679b42c Merge branch 'develop' of github.com:thecodingmachine/workadventure into 2daysLimit 2022-01-05 10:19:23 +01:00
David Négrier
20538b6287
Merge pull request #1655 from thecodingmachine/unhandled_promises
Fixing unhandled promises
2022-01-04 17:18:12 +01:00
David Négrier
24baf5664c All promises are now handled 2022-01-04 17:06:29 +01:00
David Négrier
6e27ffb2d5 Starting fixing unhandled promises 2022-01-04 16:50:43 +01:00
David Négrier
bade2b41b6
Merge pull request #1693 from jonnytest1/patch-2
added columns type definition
2022-01-04 08:57:46 +01:00
David Négrier
b5778c386f
Merge pull request #1692 from workadventure-xce/fix/user-select
Disable user selection of UI elements
2022-01-04 08:55:21 +01:00
David Négrier
5234cbe3f3
Merge pull request #1689 from Lurkars/fixAudioPlayerSrc
fix audio player src
2022-01-03 18:25:38 +01:00
David Négrier
4eb2ebd034
Merge pull request #1680 from workadventure-xce/fix/follow-via-keyboard
Fix follow requests via keyboard
2022-01-03 18:24:03 +01:00
David Négrier
fb69476b97
Merge pull request #1698 from thecodingmachine/ts-proto
Migrating front protobuf encode/decode to ts-proto lib
2022-01-03 18:07:19 +01:00
David Négrier
5b45a2bc25
Merge pull request #1699 from moufmouf/disable_e2e_for_forks
[WIP] Disabling running end to end tests for forks
2022-01-03 17:58:55 +01:00
David Négrier
7b239e8ebb Disabling running end to end tests for forks
Github Actions does not provide big enough VMs for E2E tests.
So we need to spin our own instances on AWS. But we cannot share the credentials with the forks for obvious security reasons.
We therefore need to completely disable E2E tests for forks :(
2022-01-03 17:57:41 +01:00
David Négrier
6bd9a998f9 Removing unused messages 2022-01-03 16:26:52 +01:00
David Négrier
b0ee4fc633
Merge pull request #1696 from ngc4622/iframe-division-by-zero
ScaleManager: do not apply new size if width is zero
2022-01-03 16:01:01 +01:00
David Négrier
bf070c33b5 Migrating front protobuf encode/decode to ts-proto lib
The ts-proto lib has the huge advantage of producing code the "Typescript" way and not the "Java" way.
In particular, for "oneof" types in protobuf, it is generating "ADT" that can be used to check if we forgot or not to deal with a type.
2022-01-03 15:52:46 +01:00
David Négrier
a28d86c16d
Merge pull request #1525 from thecodingmachine/player-local-storage
Allows to read and write "Player properties" from LocalStorage & Adds a camera API
2022-01-03 15:24:14 +01:00
Bénédicte Q
5d0aa835a2
Apply suggestions from code review
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 14:21:59 +01:00
Bénédicte Q
7c34e0a435
Update docs/maps/api-camera.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 14:19:55 +01:00
Benedicte Quimbert
ac27ab7e3e Revert "WIP enable/disable tutorial according to the map 'tutorial' property"
This reverts commit 47a6710b60e3856bf57c0700fe33bec95c6fc6dd.
2022-01-03 11:45:47 +01:00
Benedicte Quimbert
8157ee4603 Completes documentation 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
85d45071fa Makes onCameraUpdate subscribe-able 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
d9482d484b WIP enable/disable tutorial according to the map 'tutorial' property 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
99f9d56c5c Updates room documentation for embeddedWebsite properties 2022-01-03 11:45:47 +01:00
Bénédicte Q
a69f232a06 Update front/src/Api/Events/IframeEvent.ts
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 11:45:47 +01:00
Bénédicte Q
adc71b5695 Update front/src/Api/Events/IframeEvent.ts
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 11:45:47 +01:00
Bénédicte Q
73efdab52f Update docs/maps/api-camera.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 11:45:47 +01:00
Bénédicte Q
864ff49af5 Update docs/maps/api-camera.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 11:45:47 +01:00
Benedicte Quimbert
9cf64c3c76 Documentation on type Position 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
ddb4ae8823 Documentation 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
3abc571e79 Corrects scale managing and camera event listening 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
2a7c8f3786 Reverts adding scale to the camera updated event and uses it directly from the website manager 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
1e073d8a0e Refactoring and documentation update 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
4356767739 Adds the camera to available APIs with retrieving of the worldView 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
d672a2dead WIP API updates for tutorial and more 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
c53f0c6c8c Fixes deleting SharedVariablesManager's close() function 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
c93b9bc7ae Updates documentation 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
cbf7cdfe29 Cleans forgotten useless commentaries 2022-01-03 11:45:47 +01:00
Bénédicte Q
8bc75e1ccb Update docs/maps/api-player.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2022-01-03 11:45:47 +01:00
Benedicte Quimbert
516d756db1 Uses the current player position rather than the starting one to position iframe 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
e39e341ab7 Adds documentation on player properties 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
3490daed6b Creates player state and uses it to get and set values from local storage 2022-01-03 11:45:47 +01:00
Benedicte Quimbert
e025c1dc8e Allows to read and write "Player properties" from LocalStorage 2022-01-03 11:45:47 +01:00
Tobias Tefke
0603d08572 ScaleManager: do not apply new size if width is zero
If the game width reaches zero (e.g by resizing a cowebsite manually),
a division by zero happens when calculating the new zoom.
This results in NaN, which causes phaser to reach an invalid state when rezooming.
2022-01-03 09:09:21 +01:00
jonnytest1
8cdbf382ad
added columns type definition 2021-12-31 15:55:17 +01:00
PizZaKatZe
bda46be466 Remove left-over debug message 2021-12-31 15:35:21 +01:00
PizZaKatZe
5460bd49be Fix follow requests via keyboard 2021-12-31 15:35:21 +01:00
PizZaKatZe
c55cad6227 Disable user selection of UI elements 2021-12-31 15:27:08 +01:00
Lurkars
e7022e96d7 fix audio player src 2021-12-30 16:48:02 +01:00
Alexis Faizeau
8059af43e9
Merge pull request #1688 from thecodingmachine/master
Fix api data typeguard
2021-12-30 13:19:06 +01:00
Alexis Faizeau
68431c5242
Merge branch 'develop' into master 2021-12-30 13:18:13 +01:00
Alexis Faizeau
b929a62548
Merge pull request #1687 from thecodingmachine/fix-register
Remove policy from API data
2021-12-30 13:08:24 +01:00
Alexis Faizeau
b148a46e3c Remove unused policy type from ApiData typeguard 2021-12-30 12:51:52 +01:00
David Négrier
90320ba6e1
Merge pull request #1677 from thecodingmachine/e2e_on_ec2
Attempting to set up custom EC2 instances for E2E tests
2021-12-24 17:12:12 +01:00
David Négrier
d4f8cf4210 Updating AMI 2021-12-24 17:00:45 +01:00
David Négrier
b58f9ed6f7 Putting back token 2021-12-24 16:50:12 +01:00
David Négrier
f3ebeef4a7 Fixing doc 2021-12-24 16:45:51 +01:00
David Négrier
03d8562a65 Trying to comment personal access token 2021-12-24 16:45:32 +01:00
David Négrier
cf67b95e5b Attempting to set up custom EC2 instances for E2E tests 2021-12-24 16:43:38 +01:00
David Négrier
36ce4f8f29
Merge pull request #1664 from Chasethechicken/layers
Add missing layer properties
2021-12-24 16:10:15 +01:00
David Négrier
63f97b956e
Merge pull request #1653 from thecodingmachine/feat/follow-woka
Feature: Following WOKAs (deploy)
2021-12-24 16:03:52 +01:00
David Négrier
d37165219c Migrating followStates and followRoles from a const object to a type restricted to only the string values allowed.
This allows for more secure code (compilation checks) and simpler code too (we can pass strings instead of const values)
2021-12-24 15:49:25 +01:00
David Négrier
840f8626ad Refactoring code to use Svelte native "$" store unpacking. 2021-12-24 15:39:28 +01:00
David Négrier
a1cfaa0225 Merge branch 'develop' of github.com:thecodingmachine/workadventure into feat/follow-woka 2021-12-24 15:06:15 +01:00
David Négrier
a4a89735f6 Fixing missing builders 2021-12-24 15:04:01 +01:00
David Négrier
9a3bca0659 Updating Node version to latest minor in Pusher and Back for prod images 2021-12-24 14:59:40 +01:00
David Négrier
87bc7f8099 Slightly improving follow request popup design 2021-12-24 14:36:38 +01:00
David Négrier
d6e8bd522f Fixing issue if group was deleted when out of bounds. 2021-12-24 14:07:29 +01:00
David Négrier
fefe7c8aa5 Removing the "Ask others to follow you?" popup
No need to ask twice, the user just pressed the "follow" button.
2021-12-24 13:48:35 +01:00
David Négrier
7d796611ae
Merge pull request #1676 from albanbruder/feature-admin-message-queue
Display multiple admin messages
2021-12-24 13:25:13 +01:00
David Négrier
05bedf0c22 Adding an "out-of-bounds" notion for a group.
This allows hiding a group when some players are out of the radius but the group still exists because of the "follow" feature.
2021-12-24 13:21:44 +01:00
Alban Bruder
380328079b
Merge branch 'develop' into feature-admin-message-queue 2021-12-24 12:49:08 +01:00
Alban Bruder
00e0a14a37 Display multiple admin messages 2021-12-24 12:15:54 +01:00
Gregoire Parant
5d729d0560 Fix message Warning Container
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-24 12:02:47 +01:00
David Négrier
4a7be94b92 Fixing bug in redirect handling of rooms 2021-12-23 21:36:13 +01:00
David Négrier
524339a3a0 Adding hightlight to player names when they follow each others 2021-12-23 18:07:51 +01:00
David Négrier
368a115b4c Merge branch 'develop' of github.com:thecodingmachine/workadventure into feat/follow-woka 2021-12-23 16:04:59 +01:00
David Négrier
3e8cec312b
Merge pull request #1673 from thecodingmachine/fix_redirect
Fixing bug in redirect handling of rooms
2021-12-23 16:02:55 +01:00
David Négrier
b8c01eacbf
Merge pull request #1671 from thecodingmachine/upgrade_typescript_back
Upgrading Typescript on back server
2021-12-23 15:43:41 +01:00
David Négrier
3e91a79078 Upgrading eslint 2021-12-23 15:33:19 +01:00
Gregoire Parant
efa57d2754 Fix pretier
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-23 15:06:32 +01:00
David Négrier
d54e129fbe Fixing bug in redirect handling of rooms 2021-12-23 14:53:03 +01:00
Gregoire Parant
96d46e96c2 Fix svelte error
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-23 14:52:42 +01:00
David Négrier
220c9433d1 Updating back component to Typescript 4.5 2021-12-23 14:26:49 +01:00
Gregoire Parant
df3c618ffa Merge branch 'develop' into 2daysLimit
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Connexion/ConnectionManager.ts
2021-12-23 14:23:08 +01:00
David Négrier
3daf7a402e Upgrading ts-node-dev to stable release 2021-12-23 14:15:14 +01:00
Gregoire Parant
fd64fc43a4 Finish 2 days room limit
- Create modal to register when limit is past
 - Create modal to share the link
 - Use UrlManager to check if limit room is active

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-23 13:09:28 +01:00
David Négrier
bf64f8890d
Merge pull request #1669 from thecodingmachine/develop
Deploy 2021-12-23
2021-12-23 12:33:12 +01:00
David Négrier
a82a5caec8 Upgrading testcafe to 1.18.0 2021-12-23 11:46:39 +01:00
David Négrier
9efa115982 Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-12-23 11:04:20 +01:00
David Négrier
565ccb10c8
Merge pull request #1662 from thecodingmachine/feat/outline_api
Adding an API to control players outline
2021-12-23 10:55:03 +01:00
David Négrier
e34c49fd49 Fixing tests 2021-12-23 10:44:46 +01:00
David Négrier
35463930a0 Sending color outline on connect 2021-12-23 10:22:19 +01:00
Gregoire Parant
60f4cf75c3 Merge branch 'develop' into 2daysLimit
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-23 10:02:46 +01:00
David Négrier
482ba9690a Sharing outline color changes in real time 2021-12-22 18:34:36 +01:00
Chasethechicken
6cae134c8f Fix indentation
To make prettier happy
2021-12-22 10:13:26 +01:00
Chasethechicken
1ea7b45c7e Fix misplaced semicolon 2021-12-21 23:26:15 +01:00
Chasethechicken
66efdebc78 Fix test map 2021-12-21 23:22:58 +01:00
Chasethechicken
5197428969 Add link to layer visibility test map 2021-12-21 22:24:03 +01:00
Chasethechicken
ee46111d3f Add test instructions
Also make the invisible and alpha layers seperate areas,
to make success more obvious.
2021-12-21 22:22:26 +01:00
David Négrier
90f7287860 Adding the ability to set the player's color outline via the scripting API
(currently not shared with the other players yet)
2021-12-21 17:02:53 +01:00
David Négrier
e086f6dac0
Merge pull request #1663 from thecodingmachine/fix/map_detail_type_guard
Fixing new MapDetails type guard
2021-12-21 16:23:01 +01:00
David Négrier
1544385082
Merge pull request #1665 from albanbruder/fix-admin-message-update
Fix admin message update in frontend
2021-12-21 16:22:43 +01:00
Alban Bruder
85c07e3723 Fix admin message update in frontend 2021-12-21 13:03:24 +01:00
Chasethechicken
ba7ea16799 Add test map 2021-12-21 11:47:43 +01:00
David Négrier
e660e25616 Fixing new MapDetails type guard
It was working improperly with messages from the admin
2021-12-21 11:37:54 +01:00
Chasethechicken
6f4fe47808 Add missing layer properties
Enables map makers to set the alpha, visibility, origin and size of layers.

Co-authored-by: jonny <ga86lad@mytum.de>
2021-12-21 11:31:14 +01:00
PizZaKatZe
f2e37b8cff Clean up now unused function in group model 2021-12-20 16:49:41 +01:00
PizZaKatZe
329f721998
Update back/src/Model/Group.ts
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-12-20 16:46:16 +01:00
David Négrier
e220bf56db
Merge pull request #1658 from albanbruder/fix-admin-message
Fix: Use specified type in admin message
2021-12-20 16:05:42 +01:00
David Négrier
26897eb6d1
Merge pull request #1660 from thecodingmachine/fix/room_cleanup_on_error
Correctly cleaning room in pusher even if an exception occurs
2021-12-20 15:44:30 +01:00
David Négrier
d792d35d09 Correctly cleaning room in pusher even if an exception occurs
Closes #1646 (again)
2021-12-20 15:33:47 +01:00
Alban Bruder
d185c0ee24 fix code styling 2021-12-20 15:14:49 +01:00
David Négrier
7938a7d610
Merge pull request #1659 from thecodingmachine/fix/room_cleanup_on_error
Properly delete rooms in Pusher in case of connection error and empty room
2021-12-20 14:29:28 +01:00
David Négrier
e0aab9c0ce Properly delete rooms in Pusher in case of connection error and empty room
Closes #1646
2021-12-20 14:16:52 +01:00
Alban Bruder
4ffcebb2e4 Use specified type in admin message 2021-12-20 13:53:54 +01:00
PizZaKatZe
50147db895 Block running in follow mode 2021-12-20 13:36:29 +01:00
PizZaKatZe
21b1313a18 Get rid of buggy open state 2021-12-20 12:50:43 +01:00
Lurkars
3916d9c58e Add follow button to ui, improved flow 2021-12-20 11:35:06 +01:00
Lurkars
2cd088c049 Change follow request to "F" button, use nes-css buttons 2021-12-18 11:58:30 +01:00
PizZaKatZe
5c385c520a Cleanup; pretty 2021-12-18 11:45:17 +01:00
David Négrier
c96b65549f Performing proper cleanup when a user leaves 2021-12-18 11:34:20 +01:00
David Négrier
cd805fab31 Refactoring following code to make a distinction beween followed and following users.
Also, moving sending messages to the User class.
2021-12-18 11:34:20 +01:00
David Négrier
fd9cb09de6 Checking if a user should leave a group when someone moves in the group every time.
This fixes a long standing issue.
2021-12-18 11:34:20 +01:00
David Négrier
44ff9e30d5 Using id instead of name to identify other Wokas 2021-12-18 11:34:20 +01:00
Hanusiak Piotr
f8353bd7b5 send camera update event from CameraManager 2021-12-17 11:05:11 +01:00
David Négrier
404404d2bf Fixing pusher build 2021-12-17 10:18:31 +01:00
PizZaKatZe
ab994183e5 Fix not following users getting "stuck" in groups 2021-12-16 21:26:30 +01:00
David Négrier
b33c74da3a
Merge pull request #1645 from thecodingmachine/upgrade_typescript_4.5
Upgrade Typescript to 4.5
2021-12-16 17:35:58 +01:00
David Négrier
36f5d42668 Fixing prettier setup on messages 2021-12-16 16:46:22 +01:00
David Négrier
1ed10b0cdd Adding Prettier in messages 2021-12-16 16:40:50 +01:00
David Négrier
fff45c2f92 Adding prettier on messages 2021-12-16 16:27:44 +01:00
David Négrier
8c93801746 Fixing wrong import 2021-12-16 16:18:23 +01:00
David Négrier
805368dd3f Fixing CI with new messages 2021-12-16 16:15:12 +01:00
David Négrier
88a6e80a8f Adding JsonMessages to Docker image 2021-12-16 16:09:59 +01:00
Hanusiak Piotr
4871b406de test map for Camera API 2021-12-16 16:08:41 +01:00
David Négrier
b2bcfde5b1 Merge branch 'develop' of github.com:thecodingmachine/workadventure into upgrade_typescript_4.5 2021-12-16 16:07:17 +01:00
David Négrier
0c281db411 More eslint fixes (+ ignoring no-unsafe-argument rule for now) 2021-12-16 15:57:37 +01:00
Hanusiak Piotr
4ebc55a429 subtle changes in CameraManager in order to distinguish between setPosition and focusOn 2021-12-16 14:31:26 +01:00
Hanusiak Piotr
5f26a39a5d added basic WA.camera commands 2021-12-16 13:41:28 +01:00
David Négrier
994f8b405f
Merge pull request #1652 from thecodingmachine/small_doc_improve
Changing slightly wording of misleading phrase
2021-12-16 10:09:45 +01:00
David Négrier
7dbae8c3b8
Merge pull request #1650 from thecodingmachine/docs-camera-update
camera docs update
2021-12-16 10:09:08 +01:00
David Négrier
a5ecac290c Changing slightly wording of misleading phrase 2021-12-16 10:08:10 +01:00
David Négrier
98d3a58861 Improving typings of VirtualJoystick 2021-12-16 10:04:55 +01:00
David Négrier
fa2e583d48 Reimporting correctly types moved to /messages 2021-12-16 10:04:41 +01:00
Hanusiak Piotr
5aa2b46989 camera docs update 2021-12-16 09:51:30 +01:00
PizZaKatZe
a481376633 Clean up remaining debug log messages 2021-12-15 20:11:47 +01:00
PizZaKatZe
d3297a448e Add setting that ignores follow invites 2021-12-15 19:47:14 +01:00
PizZaKatZe
e3e7fba539 Rename InteractMenu/-Store => FollowMenu/-Store 2021-12-15 18:50:59 +01:00
PizZaKatZe
2bd71790b5 Use user IDs instead of names 2021-12-15 18:42:24 +01:00
PizZaKatZe
e528682403 Use User.group instead of iterating over groups
Thanks @moufmouf for pointing this out.
2021-12-15 18:42:24 +01:00
PizZaKatZe
1ab8165951 Process input events in follow mode as well 2021-12-15 18:42:24 +01:00
PizZaKatZe
290e5131e9 Clean up follow implementation; stop following when leader leaves the scene 2021-12-15 18:42:24 +01:00
PizZaKatZe
7bff782f7f Improve follow abort message; avoid having to change it in backend 2021-12-15 18:42:24 +01:00
PizZaKatZe
c2f5501236 Do not leave group when following is active 2021-12-15 18:42:24 +01:00
PizZaKatZe
0a410d289d Implement follow request / confirmation UI 2021-12-15 18:42:22 +01:00
PizZaKatZe
d6ef60a3d8 Send request to group members only 2021-12-15 18:41:37 +01:00
PizZaKatZe
1fca99c0d1 Send follow me request to all players 2021-12-15 18:41:36 +01:00
PizZaKatZe
b30d0989c8 Fix indentation in messages.proto 2021-12-15 18:36:12 +01:00
PizZaKatZe
e7f1395809 Stop before running into followed Avatar; stop sprite animation 2021-12-15 18:36:12 +01:00
danb
372dda792f Fix issue of interrupted conversation in follow-mode 2021-12-15 18:36:12 +01:00
danb
7c7144527c Add minimum distance to enable following 2021-12-15 18:36:12 +01:00
danb
f340e8114d Implement automatic following of other players.
* initiate following by reacting to the interact event
* subscribe to remote player and update positions in relation to them
  instead of reacting to user input
* cancel following if the user moves actively again
2021-12-15 18:36:12 +01:00
PizZaKatZe
f65491e709 Remove unused import 2021-12-15 18:36:11 +01:00
David Négrier
e3cb6d73ca
Merge pull request #1649 from ValdoTR/fix/test-skins
Added some skins to test the woka related code
2021-12-15 17:43:35 +01:00
David Négrier
e2afb6ec02
Merge pull request #1626 from workadventure-xce/fix/mapProperties
Display link to map in map credits if provided in map properties
2021-12-15 17:12:34 +01:00
Hanusiak Piotr
99ffb7b450 merged develop 2021-12-15 15:23:21 +01:00
Valdo Romao
be0c70f9ac Added some skins to test the woka related code 2021-12-15 11:11:37 +00:00
David Négrier
4385d5aff9 Adding warning messages regarding files copying 2021-12-14 19:05:14 +01:00
David Négrier
10b7fee502 Even better typing of messages in /map 2021-12-14 19:03:02 +01:00
David Négrier
2fff6ae41e Improving code security by adding stricter typings 2021-12-14 18:55:58 +01:00
David Négrier
94dcf54675
Merge pull request #1648 from thecodingmachine/feature-picture-of-user-merge
User's WOKA used in UI (3)
2021-12-14 16:36:06 +01:00
David Négrier
7ec8cd2a5b Fixing CI 2021-12-14 16:16:42 +01:00
David Négrier
ea7fc62c00 Merge branch 'feature-picture-of-user' into feature-picture-of-user-merge 2021-12-14 16:06:35 +01:00
David Négrier
08eab8dedb
Merge pull request #1647 from thecodingmachine/feature-picture-of-user-merge
User's WOKA used in UI (2)
2021-12-14 16:05:01 +01:00
David Négrier
8efeab97c6 Merge branch 'develop' of github.com:thecodingmachine/workadventure into feature-picture-of-user-merge 2021-12-14 15:50:24 +01:00
David Négrier
0a705eadf9
Merge pull request #1616 from Waclaw-I/feature-camera-zone-focus
Focusable zones
2021-12-14 15:43:45 +01:00
Piotr Hanusiak
e4b1055e36
Merge pull request #1 from thecodingmachine/feature-picture-of-user-refactor
Refactoring with a MapStore
2021-12-14 15:18:51 +01:00
David Négrier
0e68490e75 Refactoring with a MapStore
A great deal of the complexity of the current code is that we must chain
2 reactive values (one in the map "GameScene.MapPlayersByKey" and one in
the snapshot store).

The new generic MapStore class can be used to listen to stores inside a map.
When the store inside the map, or the map itself is modified, the
resulting store is updated.
2021-12-14 14:47:25 +01:00
Hanusiak Piotr
960c247b20 added documentation for Focusable Zones 2021-12-14 12:03:05 +01:00
Hanusiak Piotr
0f1378c069 PR fixes 2021-12-14 10:28:41 +01:00
David Négrier
8a96ff8ee4
Merge pull request #1614 from ValdoTR/user-room-token
Added the user-room token created from admin when we access a room
2021-12-13 17:50:49 +01:00
Valdo Romao
d523eee5bd Fixed pusher lint error 2021-12-13 16:22:59 +00:00
Valdo Romao
592e07bc4f Fixed linter errors 2021-12-13 16:19:47 +00:00
Valdo Romao
dbbfdfb66b Updated API doc 2021-12-13 16:08:44 +00:00
David Négrier
bbef3b3eaf Upgrade Typescript to 4.5
This commit contains the new Typescript version but NOT the fixes needed to have the project compiling.
2021-12-13 16:45:16 +01:00
PizZaKatZe
80794975aa Add new layer property audioCopyright 2021-12-11 22:24:28 +01:00
PizZaKatZe
aad582df70 Display map link in map credits if provided 2021-12-11 22:23:54 +01:00
Hanusiak Piotr
bbe539b785 moved gettingSnapshot logic into TexturesHelper 2021-12-10 12:02:14 +01:00
Gregoire Parant
9357afd13f Update warning container
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-10 01:54:48 +01:00
Gregoire Parant
a5d4d163e1 Add test mode
`*` char permit to defined test mode with warning message

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-12-10 01:51:40 +01:00
David Négrier
27aa3c51d3
Merge pull request #1642 from thecodingmachine/add_link_awesome
Adding links to awesome-workadventure
2021-12-09 18:11:29 +01:00
David Négrier
ac2a7e3672 Adding a reference to awesome-workadventure in README 2021-12-09 18:10:30 +01:00
David Négrier
525ca16968 Adding a reference to awesome-workadventure in CONTRIBUTING 2021-12-09 18:08:04 +01:00
David Négrier
1b982588e4
Merge pull request #1641 from thecodingmachine/doc_contrib_scripting
Developer documentation regarding scripting API
2021-12-09 12:17:18 +01:00
David Négrier
bef81edb84
Merge pull request #1639 from tabascoeye/develop
adding map properties to documentation
2021-12-09 12:17:02 +01:00
David Négrier
d7d77dd7d6 Developer documentation regarding scripting API
This PR adds a first developer documentation regarding how to extend the scripting API.
2021-12-09 12:13:16 +01:00
TabascoEye
0cb17c7fd1
adding map properties to documentation
* screenshot of the result of the map properties
* first try at documenting map properties
2021-12-08 16:41:22 +01:00
David Négrier
15bdb0eb56
Merge pull request #1636 from thecodingmachine/no_retry_on_token_decrypted_error
Don't retry Axios if a token decryption failed
2021-12-08 15:32:43 +01:00
David Négrier
598c7412a2 When sending an invalid token, the HTTP API from the Pusher now returns a 401 instead of an HTTP 500. 2021-12-08 14:46:23 +01:00
David Négrier
abe76fa325
Merge pull request #1638 from thecodingmachine/fix_map_caching
Fixing map caching
2021-12-08 14:30:04 +01:00
David Négrier
7a6e250a58 Fixing map caching
Maps in the GameScene can be modified by the scripting API.
If so, previously, the changes to the maps were persisted in the ITiledMap object in the GameScene because this was cached by the Phaser loader,
causing a series of problems, the most noticeable being that templating in the scripting API stopped working on a second visit of a page.

We are now deep-copying the map on load to avoid these nasty effects.

Closes https://github.com/workadventure/scripting-api-extra/issues/77
2021-12-08 14:23:00 +01:00
Hanusiak Piotr
b12fb228af fixed typos 2021-12-08 13:25:54 +01:00
Hanusiak Piotr
4d473480cf enter and leave zone events 2021-12-08 13:18:06 +01:00
Hanusiak Piotr
03cf5c05ff added zoom_margin optional property for zone definition 2021-12-08 13:03:25 +01:00
Benedicte Quimbert
a38fbf1cfc Merge branch 'player-local-storage' of github.com:thecodingmachine/workadventure into player-local-storage 2021-12-08 11:49:49 +01:00
Benedicte Quimbert
6871335e9b Documentation on type Position 2021-12-08 11:48:16 +01:00
Hanusiak Piotr
082b33cf02 more subtle zone leaving camera work 2021-12-08 11:31:49 +01:00
David Négrier
ff77a18262 Don't retry Axios if a token decryption failed
If a token decryption failed, it will emit a HTTP 500.

We should not retry Axios in this case but rather fail.

Note: a token decryption failed should not throw a HTTP 500 but another error code (HTTP 401?)
So maybe this fix is plainly wrong.
2021-12-08 11:16:39 +01:00
Bénédicte Q
e60ed68cd0
Update front/src/Api/Events/IframeEvent.ts
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-12-08 10:14:31 +01:00
Bénédicte Q
8a6ad40d6b
Update front/src/Api/Events/IframeEvent.ts
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-12-08 10:06:34 +01:00
Bénédicte Q
66da11f854
Update docs/maps/api-camera.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-12-08 10:06:07 +01:00
Bénédicte Q
2708384354
Update docs/maps/api-camera.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-12-08 10:05:46 +01:00
Benedicte Quimbert
08824b70aa Documentation 2021-12-07 18:47:40 +01:00
Hanusiak Piotr
957ba8f8c7 more subtle start follow player by camera. wip 2021-12-07 17:03:51 +01:00
Hanusiak Piotr
8eaacdf2e5 companion pictures store 2021-12-07 16:37:24 +01:00
David Négrier
307bf29f47
Merge pull request #1634 from thecodingmachine/fix_existSceneUrl_undefined_master
exitSceneUrl property redirects to a URL with "undefined" as the second URL part (2)
2021-12-07 16:13:32 +01:00
Hanusiak Piotr
5efa17651c show woka-icon with camera on 2021-12-07 16:07:58 +01:00
David Négrier
1d2d60a67a Fixing issue with "instance" part of the URL lost in exitSceneUrl URLs. 2021-12-07 15:55:36 +01:00
David Négrier
0d5c318040 Adding a test case to test exitSceneUrl property
this test case reproduces error #1631
2021-12-07 15:55:26 +01:00
Hanusiak Piotr
cbe595e7b6 simples woka icon styling 2021-12-07 15:21:54 +01:00
David Négrier
1e6ce4dec8 Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-12-07 14:59:17 +01:00
Hanusiak Piotr
731f616cce woka icon inside menu 2021-12-07 14:56:42 +01:00
David Négrier
7b94f8b8ca
Merge pull request #1612 from thecodingmachine/fix-admin-sockets
Creating only one WS connection to pusher from admin
2021-12-07 14:56:13 +01:00
Hanusiak Piotr
b36f39d3d9 revert menu icon to its original view 2021-12-07 14:01:30 +01:00
Hanusiak Piotr
e62ad6b9c9 merged develop 2021-12-07 13:56:28 +01:00
Hanusiak Piotr
e97fd1d38c Merge branch 'develop' into feature-camera-zone-focus 2021-12-07 13:20:15 +01:00
Hanusiak Piotr
29ccb52c93 cleanup 2021-12-07 13:18:36 +01:00
Hanusiak Piotr
b00d24dbf7 refocusing on target (if any) in case of an external resize 2021-12-07 12:48:08 +01:00
David Négrier
2f8bd52dba
Merge pull request #1628 from workadventure-xce/feat/force-cowebsite-triggers
New setting: Always ask before opening cowebsites / Jitsi meetings
2021-12-07 10:42:33 +01:00
David Négrier
d68da0754e
Merge pull request #1472 from thecodingmachine/type_module
Switching API to use type="module" scripts
2021-12-07 09:23:58 +01:00
David Négrier
df700a8740
Merge pull request #1494 from workadventure-xce/fix/volumeSliderUI
Fix volume slider UI updates
2021-12-07 09:20:55 +01:00
David Négrier
2495aa1faf
Merge pull request #1615 from thecodingmachine/dependabot/npm_and_yarn/front/joeattardi/emoji-button-4.6.2
Bump @joeattardi/emoji-button from 4.6.0 to 4.6.2 in /front
2021-12-07 09:14:10 +01:00
PizZaKatZe
d49d44d7ea New setting: Always ask before opening cowebsites / Jitsi meetings 2021-12-06 23:25:25 +01:00
PizZaKatZe
a71fc40b5d Fix volume slider UI updates 2021-12-06 21:54:33 +01:00
Benedicte Quimbert
4b4f5520db Corrects scale managing and camera event listening 2021-12-06 18:44:37 +01:00
David Négrier
6a8717c22f
Merge pull request #1602 from thecodingmachine/e2e_reconnect_tests
Adding a reconnect feature in case first Pusher request fails
2021-12-06 18:44:18 +01:00
Alexis Faizeau
a6a3a76491
Merge pull request #1625 from thecodingmachine/linting
Fix Svelte linting
2021-12-06 18:35:16 +01:00
David Négrier
b9840cfa3d Fix CI 2021-12-06 18:34:09 +01:00
David Négrier
84f7a8c383 Pretty fix 2021-12-06 18:20:06 +01:00
Alexis Faizeau
3bb86dfea8 Fix Svelte linting 2021-12-06 18:16:24 +01:00
David Négrier
c27662c315 Merge branch 'develop' of github.com:thecodingmachine/workadventure into e2e_reconnect_tests 2021-12-06 18:07:47 +01:00
David Négrier
d7875c2c68 Adding missing handler for error message in front + removing 2 useless classes in ServerToClientMessage 2021-12-06 18:00:17 +01:00
Alexis Faizeau
2859093648
Merge pull request #1624 from thecodingmachine/linting
Add lint on Svelte files
2021-12-06 16:47:26 +01:00
David Négrier
331daca854 Fixing admin token for requests 2021-12-06 16:37:27 +01:00
Alexis Faizeau
c95e20c677 Lint & Prettier fixes on Svelte files 2021-12-06 16:36:05 +01:00
Alexis Faizeau
6cd76b9c1b Add Eslint check & Prettier on Svelte files 2021-12-06 16:10:35 +01:00
David Négrier
f6803b6d5d Fixing pusher and back url 2021-12-06 15:38:30 +01:00
David Négrier
15565c9a29 Changing pusher / back URL depending on environment 2021-12-06 15:29:24 +01:00
David Négrier
44c4b4fc34 Fixing error handling of fonts when there is no connection to front 2021-12-06 15:14:38 +01:00
David Négrier
a991f0eec9 increase timeouts (who knows....) 2021-12-06 12:04:04 +01:00
Hanusiak Piotr
3d3ca45921 ran prettier for back 2021-12-06 11:37:55 +01:00
David Négrier
f5f69e7143 Fixing missing await 2021-12-06 11:35:37 +01:00
David Négrier
94762c86c5 Refactoring tests 2021-12-06 11:21:18 +01:00
David Négrier
05f805445a Adding a delay.... who knows! 2021-12-05 21:33:40 +01:00
David Négrier
a5325e9327 Improving test speed and trying to get error logs whatever happens 2021-12-05 21:24:29 +01:00
David Négrier
a5c7abe61e Enable testcafe dev mode to pinpoint testcafe errors 2021-12-05 21:21:15 +01:00
David Négrier
97460886f0 Fixing CI 2021-12-05 19:24:54 +01:00
David Négrier
a864498d16 Fixing docker-compose up linking to wrong directory when started in container 2021-12-04 23:17:07 +01:00
David Négrier
492fd2ed4e Adding retried URL in retry error logs 2021-12-04 18:30:12 +01:00
David Négrier
2cfc504e9a Adding a retry on /anonymLogin 2021-12-04 18:18:43 +01:00
Hanusiak Piotr
d6be8bc71b revert changes made to the starter/map.json 2021-12-04 17:26:23 +01:00
Hanusiak Piotr
9a81aa83f1 added test map for focusable zones feature 2021-12-04 17:24:39 +01:00
David Négrier
da1687bdf2 Forcing network name to be able to use docker-compose from inside testcafe container
(otherwise, containers started inside testcafe container are not on the same network)
2021-12-04 17:23:09 +01:00
Hanusiak Piotr
a2627eb577 Merge branch 'feature-camera-zone-focus' of github.com:Waclaw-I/workadventure into feature-camera-zone-focus 2021-12-04 17:11:56 +01:00
Hanusiak Piotr
4bc21a95c5 ran prettier 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
a1a83775d6 issues with zone triggering fixed 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
37949eda53 working with zoom modifier calculating per zone 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
ddaa81a7ac some more tweaks with smooth zooming control 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
092daa245f locking zooming via player input 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
ef3a7513e2 camera zoom using scaleManager zooming. WIP 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
eb95e2e483 detecting zoe enter and leave events 2021-12-04 17:11:49 +01:00
Hanusiak Piotr
8016cf3c1a fallback in case of CanvasRenderer 2021-12-04 16:29:28 +01:00
Hanusiak Piotr
3e904447d3 Merge branch 'feature-picture-of-user' of github.com:Waclaw-I/workadventure into feature-picture-of-user 2021-12-04 15:36:27 +01:00
Hanusiak Piotr
c33e78d1ee ran prettier 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
a62cfe1cd8 fallback if avatar could not be loaded 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
ed8d6855b1 fixed bug with woka picture snapshot taking current frame and not front 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
ecb334cbd2 fixed Woka picture positioning 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
642d3bb301 Changed the way WOKA's are stored 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
2ea54fd243 use Prettier to fix style issues 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
913a07350d little cleanup, added reject for Character snapshot 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
dcd8e57853 images are blurred no more 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
7b94ac644d working woka picture if no camera view is provided 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
f4ce82481e avatar as a menu button 2021-12-04 15:36:11 +01:00
Hanusiak Piotr
b8eeb3c8ab saving players avatar textures to the texturesManager 2021-12-04 15:36:11 +01:00
David Négrier
720370a9fa Revert "Trying restart instead in up --force-recreate to have pusher running again"
This reverts commit 3028a1b0e4.
2021-12-04 10:53:40 +01:00
David Négrier
3028a1b0e4
Trying restart instead in up --force-recreate to have pusher running again 2021-12-04 00:52:17 +01:00
David Négrier
411ee251ff Improving URL displaying of failed Axios request 2021-12-03 22:02:19 +01:00
David Négrier
487b8317e7 Adding stacktrace to error message in console 2021-12-03 21:58:08 +01:00
David Négrier
ebcfc069bc More details in the error 2021-12-03 21:45:25 +01:00
David Négrier
8b21ba5383 Improving Axios error logging 2021-12-03 20:55:46 +01:00
David Négrier
f90bd85ded Improving error reporting and adding Video reports 2021-12-03 19:54:34 +01:00
David Négrier
0c7aedb777 Setting LIVE_RELOAD=0 in CI 2021-12-03 18:41:21 +01:00
David Négrier
6427d85c24 Fixing warning in lint 2021-12-03 18:29:36 +01:00
David Négrier
0a3417e813 Adding a Docker image to have testcafe + docker-compose 2021-12-03 18:20:32 +01:00
David Négrier
936a6bfeec
Merge pull request #1621 from thecodingmachine/fix_empty_submessage
Fix sending empty variable message for users that have no right to re…
2021-12-03 17:23:04 +01:00
David Négrier
d23a64d074 Fix sending empty variable message for users that have no right to read variable
When a user had no right to read a variable and the variable changed, the user was notified nonetheless with an empty SubMessage, causing an error message in the front:

> Uncaught Error: Unexpected batch message type onmessage RoomConnection.ts:181 RoomConnection.ts:181:30 onmessage RoomConnection.ts:181

This fix closes #1613
2021-12-03 16:07:42 +01:00
David Négrier
c89afba6cd Working on more tests 2021-12-03 15:21:31 +01:00
Hanusiak Piotr
831d238be7 ran prettier 2021-12-03 10:11:16 +01:00
David Négrier
78ee4009c8 Improving tests, WIP 2021-12-03 09:28:30 +01:00
David Négrier
9bba6069b4 Making LIVE_RELOAD configurable 2021-12-03 09:23:52 +01:00
David Négrier
bf830a67cb Fixing debug controller in back 2021-12-03 09:23:31 +01:00
Hanusiak Piotr
e792b75ad3 issues with zone triggering fixed 2021-12-02 18:11:22 +01:00
Hanusiak Piotr
3e3a04d50e working with zoom modifier calculating per zone 2021-12-02 17:46:09 +01:00
Hanusiak Piotr
c09609f70c some more tweaks with smooth zooming control 2021-12-02 14:44:13 +01:00
Hanusiak Piotr
d0cd7b0806 locking zooming via player input 2021-12-02 13:41:52 +01:00
Hanusiak Piotr
85bf2fe70d camera zoom using scaleManager zooming. WIP 2021-12-02 13:20:40 +01:00
David Négrier
4cff230256 Creating only one WS connection to pusher from admin
Also: migration to Typescript 4.5 and µWebsockets 1.20.4
2021-12-01 20:14:53 +01:00
dependabot[bot]
6be57a2b3c
Bump @joeattardi/emoji-button from 4.6.0 to 4.6.2 in /front
Bumps [@joeattardi/emoji-button](https://github.com/joeattardi/emoji-button) from 4.6.0 to 4.6.2.
- [Release notes](https://github.com/joeattardi/emoji-button/releases)
- [Commits](https://github.com/joeattardi/emoji-button/compare/v4.6.0...v4.6.2)

---
updated-dependencies:
- dependency-name: "@joeattardi/emoji-button"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-01 18:29:39 +00:00
Valdo Romao
67fc6e8cd2 Fixed missing definition in FetchMemberDataByUuidResponse 2021-12-01 17:59:56 +00:00
Valdo Romao
dd79f7d0f4 Added the user-room token created from admin when we access a room 2021-12-01 15:50:14 +00:00
Hanusiak Piotr
eecf831ca5 detecting zoe enter and leave events 2021-12-01 14:48:14 +01:00
David Négrier
7326e2a38c Mounting Docker socket in testcafe container 2021-12-01 14:37:36 +01:00
David Négrier
a3b20cf065 Installing NPM dependencies in CI for tests 2021-12-01 14:29:51 +01:00
David Négrier
fcf0888864 Adding a reconnect feature in case first Pusher request fails
Now, if the first pusher request fails, a waiting message will be displayed and the application will reconnect when the pusher comes back alive or the network connection is established again.
2021-12-01 14:14:02 +01:00
Hanusiak Piotr
5dc29bc86c ran prettier 2021-12-01 11:20:37 +01:00
Hanusiak Piotr
3f7511e682 fallback if avatar could not be loaded 2021-12-01 11:14:54 +01:00
Hanusiak Piotr
9de13faff2 fixed bug with woka picture snapshot taking current frame and not front 2021-12-01 10:45:01 +01:00
Hanusiak Piotr
bf618f1c9d fixed Woka picture positioning 2021-12-01 10:26:09 +01:00
Hanusiak Piotr
407879528e Changed the way WOKA's are stored 2021-11-30 19:10:35 +01:00
grégoire parant
9eb4206fe0
Merge pull request #1611 from thecodingmachine/master
Master
2021-11-30 18:10:36 +01:00
grégoire parant
4875a8fed9
Merge pull request #1610 from thecodingmachine/fixingQueryParamsRegisterUrl
Fixing "Query string parameters prevent WA from loading"
2021-11-30 17:45:07 +01:00
Gregoire Parant
b098b5f37d Fixing "Query string parameters prevent WA from loading"
Due to a regression, query string parameters added to the URL (like:

http://play.workadventure.localhost/_/global/maps.workadventure.localhost/starter/map.json?utm_source=sendinblue&utm_campaign=WA+-+2021+Christmap+map+launch&utm_medium=email#foo

) were causing a crash in WA.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-30 17:29:53 +01:00
David Négrier
5e7e43732a Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-11-30 15:13:36 +01:00
David Négrier
7b52c13fae
Merge pull request #1609 from thecodingmachine/fix_prod_docker_compose
Adding missing environment variable in docker-compose.prod.yml
2021-11-30 15:09:52 +01:00
David Négrier
0a6d9e88bc
Merge pull request #1608 from thecodingmachine/admin_url_not_compulsory
Making the ADMIN_URL parameter optionnal in front
2021-11-30 15:06:47 +01:00
David Négrier
8205775dc9 Adding missing environment variable in docker-compose.prod.yml
In the new version, a new FRONT_URL environment variable is now compulsory in the Pusher.
This is done to setup CORS security in the pusher.

This commit adds this environment variable in the sample docker-compose.prod.yml file.
2021-11-30 15:02:52 +01:00
David Négrier
d81ecb3199 Making the ADMIN_URL parameter optionnal in front
This parameter is only used in the SAAS version (and ideally, should disappear completely).
The warning message that uses the ADMIN_URL should originate from the admin itself.
2021-11-30 14:58:37 +01:00
David Négrier
986f826830
Merge pull request #1607 from thecodingmachine/fix_query_string
Fixing "Query string parameters prevent WA from loading"
2021-11-30 14:48:15 +01:00
David Négrier
06483fd586 Fixing "Query string parameters prevent WA from loading"
Due to a regression, query string parameters added to the URL (like:

http://play.workadventure.localhost/_/global/maps.workadventure.localhost/starter/map.json?utm_source=sendinblue&utm_campaign=WA+-+2021+Christmap+map+launch&utm_medium=email#foo

) were causing a crash in WA.

This commit fixes the issue (and adds a E2E test)
2021-11-30 14:34:43 +01:00
David Négrier
12a8aa2585
Merge pull request #1605 from thecodingmachine/fix_injection
Fixed potential injection by switching map container to PHP
2021-11-30 12:01:22 +01:00
David Négrier
f40dda69f4 Fixing missing header extension in new maps image 2021-11-30 11:50:15 +01:00
David Négrier
60475111cc Fixing maps image 2021-11-30 09:15:42 +01:00
Hanusiak Piotr
0a0d7e4017 use Prettier to fix style issues 2021-11-29 20:39:09 +01:00
David Négrier
41fd848fa0 Fixed potential injection by switching map container to PHP
Some HTML files were importing iframe_api.js automatically by detecting the referrer document.

While this was done in a safe way (the map container does not use cookies), it is not
a best practice to load a script originating from document.referrer.

This PR solves the issue by using PHP to inject the correct domain name in the HTML files.
2021-11-29 19:05:13 +01:00
David Négrier
21e400a4a1
Merge pull request #1604 from thecodingmachine/develop
Deploy 2021-11-29
2021-11-29 18:43:57 +01:00
David Négrier
591467f1e3
Merge pull request #1603 from thecodingmachine/fix-black-screen
Cannot rezise main cowebsite when fullscreen is enable
2021-11-29 18:37:36 +01:00
Alexis Faizeau
812485f863 Cannot rezise main cowebsite when fullscreen is enable 2021-11-29 18:35:32 +01:00
Hanusiak Piotr
e43b7a255a little cleanup, added reject for Character snapshot 2021-11-28 17:05:12 +01:00
David Négrier
233c3d1abe
Merge pull request #1598 from thecodingmachine/refactor_testcafe_tests
Refactoring test cafe tests
2021-11-28 16:52:24 +01:00
David Négrier
eac4bb2875 Refactoring test cafe tests
- Using "Roles" to log users
- Adding seemingly useless import statement but important for code completion
2021-11-28 16:43:12 +01:00
Hanusiak Piotr
fb188578da images are blurred no more 2021-11-26 23:49:49 +01:00
Hanusiak Piotr
d521e052b4 working woka picture if no camera view is provided 2021-11-26 23:30:21 +01:00
Hanusiak Piotr
0967563eda avatar as a menu button 2021-11-26 22:16:01 +01:00
Hanusiak Piotr
b3d4230354 saving players avatar textures to the texturesManager 2021-11-26 17:25:32 +01:00
Benedicte Quimbert
7eda8a45a7 Reverts adding scale to the camera updated event and uses it directly from the website manager 2021-11-26 14:46:02 +01:00
grégoire parant
5e11cccdf9
Merge pull request #1593 from thecodingmachine/develop
Next release 1.5.7
2021-11-25 11:44:36 +01:00
grégoire parant
923a134270
Merge pull request #1592 from thecodingmachine/fix-blank-cowebsite-bar
Resize cowebsites when main slot is loaded
2021-11-25 11:36:48 +01:00
Benedicte Quimbert
f761858328 Refactoring and documentation update 2021-11-25 10:56:43 +01:00
Benedicte Quimbert
5b6a8ca4d7 Adds the camera to available APIs with retrieving of the worldView 2021-11-25 10:56:42 +01:00
Benedicte Quimbert
99dfd77600 WIP API updates for tutorial and more 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
353577b1d7 Fixes deleting SharedVariablesManager's close() function 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
1dd07f0ed3 Updates documentation 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
926fcf9d63 Cleans forgotten useless commentaries 2021-11-25 10:55:54 +01:00
Bénédicte Q
58e36ebed2 Update docs/maps/api-player.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-11-25 10:55:54 +01:00
Benedicte Quimbert
a22c2a09b8 Uses the current player position rather than the starting one to position iframe 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
c5f96a76ad Adds documentation on player properties 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
bf69b55e99 Creates player state and uses it to get and set values from local storage 2021-11-25 10:55:54 +01:00
Benedicte Quimbert
89cd292527 Allows to read and write "Player properties" from LocalStorage 2021-11-25 10:55:54 +01:00
Alexis Faizeau
a775a01d2a Resize cowebsites when main slot is loaded 2021-11-25 10:48:14 +01:00
David Négrier
3d29fcad7e
Merge pull request #1591 from thecodingmachine/develop
Next release 1.5.7
2021-11-24 22:57:20 +01:00
David Négrier
ecb72d0fd1 Adding FRONT_URL in pusher 2021-11-24 22:47:46 +01:00
grégoire parant
5bdb5d98a9
Merge pull request #1589 from thecodingmachine/fix-grab-cowebsite
Handle touch & mouse events on same time for cowebsite holder
2021-11-24 19:44:07 +01:00
grégoire parant
a59c07d8a3
Merge pull request #1590 from thecodingmachine/FixHashLocalStorage
Fix htag last map URL visited in localstorage
2021-11-24 19:43:48 +01:00
Gregoire Parant
060c844468 Fix htag in localstorage
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-24 19:24:43 +01:00
Alexis Faizeau
07c01d81bf Handle touch & mouse events on same time for cowebsite holder 2021-11-24 18:38:39 +01:00
David Négrier
69a26a0e55
Merge pull request #1588 from thecodingmachine/develop
Deploy 2021-11-24 2
2021-11-24 17:44:48 +01:00
David Négrier
445599416c Commenting waiting as this does not work for some reason 2021-11-24 17:24:11 +01:00
David Négrier
e8a78a0646
Merge pull request #1585 from thecodingmachine/HotFixCleanTokenParamUrl
Clean token auth of url params
2021-11-24 17:10:22 +01:00
David Négrier
94959e2e91 Merge branch 'develop' of github.com:thecodingmachine/workadventure into HotFixCleanTokenParamUrl
# Conflicts:
#	back/src/Services/Logger.ts
2021-11-24 17:03:29 +01:00
David Négrier
257162c451 Fixing prettier 2021-11-24 17:02:11 +01:00
David Négrier
cf6d461247
Merge pull request #1586 from thecodingmachine/revert-1552-improve_logging
Revert "Improving log messages"
2021-11-24 17:00:37 +01:00
David Négrier
d1122d75ec Fixing CI 2021-11-24 16:59:22 +01:00
David Négrier
d8c10ce10a CI fix 2021-11-24 16:32:37 +01:00
David Négrier
065404758b Making sure pusher and admin are started in CI 2021-11-24 16:22:26 +01:00
David Négrier
6e6cdc7bde
Revert "Improving log messages" 2021-11-24 16:20:07 +01:00
David Négrier
6c5f330b71
Merge pull request #1584 from thecodingmachine/fixes
Fixes
2021-11-24 15:55:33 +01:00
Gregoire Parant
b02c09fc7b Clean token auth of url params
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-24 15:49:45 +01:00
David Négrier
be3c1eea6f
Merge pull request #1583 from thecodingmachine/pretty_ci_front_fix
Fixing running of prettier check on the front
2021-11-24 15:46:18 +01:00
David Négrier
0fe2de090e
Merge pull request #1552 from thecodingmachine/improve_logging
Improving log messages
2021-11-24 15:43:24 +01:00
Alexis Faizeau
5c3036e18b Display a default skin on remote player entity 2021-11-24 15:43:01 +01:00
David Négrier
a1107bd20e Merge branch 'develop' of github.com:thecodingmachine/workadventure into improve_logging 2021-11-24 15:36:35 +01:00
David Négrier
07ba532c5e Prettier fixes on front 2021-11-24 15:31:17 +01:00
David Négrier
9b29fde1b3 Merge branch 'develop' of github.com:thecodingmachine/workadventure into pretty_ci_front_fix 2021-11-24 15:30:29 +01:00
David Négrier
dc58f16418
Merge pull request #1582 from thecodingmachine/end-to-end-tests
Making the loader resizable
2021-11-24 15:30:15 +01:00
David Négrier
2cbf5b56af Fixing linting 2021-11-24 15:29:12 +01:00
David Négrier
d3bd99b5ee Fixing running of prettier check on the front 2021-11-24 15:24:24 +01:00
David Négrier
7c6105d93a Making the loader resizable
This way, if the window is resized while loading, the loading bar will stay in the middle
2021-11-24 15:21:07 +01:00
Alexis Faizeau
24640d13bb Fix removing of co-website action trigger 2021-11-24 14:50:19 +01:00
David Négrier
ced08e69c9
Merge pull request #1581 from thecodingmachine/develop
Deploy 2021-12-24
2021-11-24 13:36:11 +01:00
David Négrier
bb435f3580
Merge pull request #1556 from thecodingmachine/iconserver
Add icon server on self host services
2021-11-24 12:24:57 +01:00
David Négrier
64e86411c5
Fixing env var for ICON_URL 2021-11-24 12:19:45 +01:00
David Négrier
2f632ae472
Merge pull request #1580 from thecodingmachine/fix-tab
Fix tab index on embedded iframes
2021-11-24 12:17:25 +01:00
David Négrier
f3e498439c
Merge pull request #1579 from thecodingmachine/end-to-end-tests
Adding End to end tests
2021-11-24 12:09:23 +01:00
David Négrier
dfad0a7b57 Removing useless wait 2021-11-24 12:03:48 +01:00
Alexis Faizeau
6a7385947d Fix authentication mandatory 2021-11-24 11:55:28 +01:00
David Négrier
7c2bf8700b Fixing test 2021-11-24 11:50:23 +01:00
David Négrier
780d92782c Adding a wait step for messages generated file to be available before starting pusher and back 2021-11-24 11:31:11 +01:00
David Négrier
168156b7ff Display error logs in failure 2021-11-24 11:11:38 +01:00
Alexis Faizeau
4ca763c028 Fix tab index on embbed iframes 2021-11-24 11:05:18 +01:00
David Négrier
550ffaf8a8 Merge branch 'develop' of github.com:thecodingmachine/workadventure into end-to-end-tests
# Conflicts:
#	front/src/Administration/AnalyticsClient.ts
2021-11-24 11:01:50 +01:00
David Négrier
8eb346de25 Displaying logs in case of error 2021-11-24 10:58:26 +01:00
David Négrier
7ef6431b64 More CI debug 2021-11-24 10:21:35 +01:00
David Négrier
806b97afab Refactoring Analytics to remove errors 2021-11-24 10:21:19 +01:00
grégoire parant
29c0b57f0c
Merge pull request #1573 from thecodingmachine/PostHogNewAction
Add new action post hog
2021-11-24 10:02:34 +01:00
David Négrier
02ed853399 Switching to actions/upload-artifact 2021-11-24 10:01:35 +01:00
David Négrier
c32a523923 CI fix 2021-11-24 09:29:50 +01:00
David Négrier
963486b663 Adding code to post screenshots of failed tests 2021-11-24 09:26:54 +01:00
David Négrier
a9ecbeec84 More CI fix 2021-11-24 09:12:24 +01:00
David Négrier
24249a1e74 Fixing CI 2021-11-24 08:57:49 +01:00
David Négrier
609af979ff Trying to speed up process 2021-11-23 19:01:56 +01:00
David Négrier
678fb71a7a More Github action fixes 2021-11-23 19:00:10 +01:00
David Négrier
303251b465 Github Actions fix attempt 2021-11-23 18:54:15 +01:00
David Négrier
0932e1de73 Taking exit code from the container 2021-11-23 18:44:00 +01:00
David Négrier
ab337409a1 Trying to fix issue with Github rights 2021-11-23 18:42:25 +01:00
David Négrier
3aec774cf3 Adding end-to-end test run in Github actions 2021-11-23 15:49:44 +01:00
David Négrier
a82f4e1813 Adding end-to-end tests
The first test is testing a tricky cache scenario with the back when testing variables.
The end-to-end package used is testcafe.
2021-11-23 15:43:34 +01:00
David Négrier
d8ecae64f0 Moving lastLoad initialization before we start loading to avoid loading several times 2021-11-23 09:34:39 +01:00
David Négrier
82a1a5fc1e Retry loading map on variable error
If the back is getting an error (because the user has no right to set a variable),
instead of failing directly, let's try to reload the map (maybe we have cached a wrong version of the map).
2021-11-22 18:43:56 +01:00
Gregoire Parant
ecc6321e17 Add new action post hog
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-18 11:39:56 +01:00
David Négrier
3487fa90e0
Merge pull request #1570 from thecodingmachine/fixZoom
Fix zoom
2021-11-17 16:19:26 +01:00
Alexis Faizeau
44c99fb0ef Fix zoom from cowebsite changes 2021-11-17 15:26:58 +01:00
grégoire parant
80c314bb9e
Merge pull request #1568 from thecodingmachine/master
Master release 1.6.0
2021-11-17 02:23:27 +01:00
grégoire parant
26fa566d85
Change 'access-control-allow-origin' to FRONT_URL env variavle (#1567)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-17 02:21:58 +01:00
grégoire parant
75ba9ddae8
HotFix Allow Origin header for CORS (#1566)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 18:38:18 +01:00
grégoire parant
f6b8677c2e
Merge pull request #1565 from thecodingmachine/HotFixCreditPage
Update design of credit page
2021-11-16 15:33:35 +01:00
Gregoire Parant
e5979998c5 Update design of credit page
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 15:28:54 +01:00
grégoire parant
7d73ca321d
Merge pull request #1564 from thecodingmachine/HotFixAuthenticationManager
Hot fix authentication manager
2021-11-16 15:17:46 +01:00
Gregoire Parant
0614fa7b47 HotFix copy link to share it
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 15:03:54 +01:00
Gregoire Parant
e54732be1b HotFix authentication manager to get data from back
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 14:46:32 +01:00
grégoire parant
6fafb727ba
Merge pull request #1563 from thecodingmachine/HotFixConnexionManager
HotFix connexion manager
2021-11-16 13:31:43 +01:00
Gregoire Parant
ba89d9b122 HotFix DISABLED_ROOM for env variable
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 13:18:40 +01:00
Gregoire Parant
8768374460 HotFix connexion manager
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 13:14:40 +01:00
grégoire parant
832c4ab300
Merge pull request #1562 from thecodingmachine/HotFixNewJwtTokenDecrypted
HotFix encrypted and decrypted error
2021-11-16 11:26:35 +01:00
Gregoire Parant
ec1cc92c8b replace console log by error
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 11:23:18 +01:00
Gregoire Parant
c1dc438138 HotFix encrypted and decrypted error
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-16 11:14:27 +01:00
David Négrier
78698ff17f
Merge pull request #1551 from thecodingmachine/deprecate-onenterzone
Updates API documentation (other than room) following onEnterZone & onLeaveZone deprecation
2021-11-15 17:37:05 +01:00
grégoire parant
9bdda210f5
Merge pull request #1561 from thecodingmachine/develop
Release v1.6.0
2021-11-15 16:51:48 +01:00
Gregoire Parant
d3964ae25b HotFix conflict merging 2021-11-15 16:36:10 +01:00
Gregoire Parant
20164417fb Change data by resCheckTokenAuth 2021-11-15 16:34:23 +01:00
David Négrier
4e042389c5 Merge branch 'master' of github.com:thecodingmachine/workadventure into develop
# Conflicts:
#	front/src/Connexion/ConnectionManager.ts
#	pusher/src/Controller/AuthenticateController.ts
#	pusher/src/Controller/IoSocketController.ts
#	pusher/src/Services/JWTTokenManager.ts
2021-11-15 16:30:45 +01:00
David Négrier
578fa21591
Merge pull request #1543 from thecodingmachine/fixAdminSocket
FIX: the admin sockets now uses a short live to check room authorization
2021-11-15 16:21:20 +01:00
David Négrier
8b6c16fd30
Merge pull request #1553 from thecodingmachine/openidAdminConnect
OpenId & Admin connect
2021-11-15 16:20:00 +01:00
Gregoire Parant
210a789aa4 Fix feedback @moufmouf 2021-11-15 15:58:08 +01:00
grégoire parant
a4b8a8422f
Merge pull request #1559 from thecodingmachine/openIdDisabledAnonymousSelfHost
Open id disabled anonymous self hosted
2021-11-15 15:29:55 +01:00
Gregoire Parant
bbc2ac2550 Update Connection manager to clean url history of navigator 2021-11-15 15:25:49 +01:00
Gregoire Parant
61b8d584af delete useless userIdentify 2021-11-15 14:34:23 +01:00
Gregoire Parant
16c08d86f2 Update hydraAccessToken to accessToken 2021-11-15 12:30:25 +01:00
Gregoire Parant
7d0b573d37 Define profile variable to show user connected
- OPID_PROFILE_SCREEN_PROVIDER is a variable to show profile of user connected. You can defined your own provider or use classic provider of WorkAdventure.
 - OpenIdProfileController with url "/profile" get user data and create simple html to show user informations. This url will be called with params 'accessToken'
 - If you define your custom profile url, it will be called with param 'accessToken'.

accessToken is token to access at user informations in your OpenId provider.
2021-11-12 20:48:26 +01:00
Gregoire Parant
15cdc54ec3 Add evnvironment Enum for OPID_LOGIN_SCREEN_PROVIDER variable 2021-11-12 19:36:37 +01:00
Gregoire Parant
f905426ebd Add new variable login provider to connect user 2021-11-12 19:36:13 +01:00
Gregoire Parant
24a1f324c7 Add OpenId login url and provider to login user 2021-11-12 19:35:34 +01:00
Gregoire Parant
e073d70098 Merge branch 'develop' into openidAdminConnect
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-12 17:01:26 +01:00
Gregoire Parant
ca74f92051 Pull open id admin from @GRP 2021-11-12 16:59:34 +01:00
Gregoire Parant
c21ea8803a Add OPID redirect url
Is important to defined redirect url to be connected with openid provider
2021-11-12 16:52:44 +01:00
Gregoire Parant
213af0cfa3 Changes ANONYMOUS dynamic variable 2021-11-12 16:47:39 +01:00
Gregoire Parant
fa233e13c6 Changes ANONYMOUS variable
This variable will be use to mandatory login user in self hosted
2021-11-12 16:43:37 +01:00
grégoire parant
c1788424b5
Merge pull request #1533 from Lurkars/oidcRequired
use OIDC without admin api, option to disable anonymous login

Thanks for your work @Lurkars. I will take your changes and apply some update. When I will finish, I will  share you the result and requirement for mounting correct openid connection with puhser and without ADMIN part 💪  🚀
2021-11-12 16:39:15 +01:00
Gregoire Parant
461dee776c Update css 2021-11-12 16:22:37 +01:00
Gregoire Parant
49f68451ae Update profile menu and change UX
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-12 15:31:49 +01:00
Gregoire Parant
d3f120f2bb Update to have token when user is connected
- Update menu design

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-12 12:13:44 +01:00
Gregoire Parant
1db22d82af Set state in local storage when openid provider redirect on jwt with token value
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-10 18:26:50 +01:00
Alexis Faizeau
2513f8b3d6 Add icon server on production docker services 2021-11-10 18:22:03 +01:00
Alexis Faizeau
eac5e8adc8 Add icon server on single domain services 2021-11-10 18:20:30 +01:00
David Négrier
ee4ec7ba97
Merge pull request #1555 from thecodingmachine/iconserver
Add iconserver in services
2021-11-10 18:12:47 +01:00
David Négrier
0f6ecfc311
Merge pull request #1554 from thecodingmachine/twemojiImplementation
Implement Twemoji on emote
2021-11-10 18:11:51 +01:00
Alexis Faizeau
624593e425 Implement twemoji on emote 2021-11-10 16:55:20 +01:00
Alexis Faizeau
1c48feeb61 Add iconserver in services 2021-11-10 16:46:13 +01:00
Gregoire Parant
7406b62093 Add jwt token if is defined un URL
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-09 00:38:32 +01:00
Gregoire Parant
89baafba2f Rollback openid connect to use code and nonce
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-09 00:08:01 +01:00
Gregoire Parant
4c028bfcb3 OpenId from Admin connect
- Create admin environment for redirect uri of openID
 - Add log out redirect when user click on log out button

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-11-08 19:27:01 +01:00
Alexis Faizeau
dd89f12c2e Implement logger on pusher 2021-11-08 19:05:25 +01:00
Alexis Faizeau
6a195be814 Implement logger on back 2021-11-08 17:44:57 +01:00
Alexis Faizeau
c573e9fbaf Implement no floating promises on eslint rules 2021-11-08 14:45:25 +01:00
David Négrier
6c6a7e6fe4 Improving log messages
Signed-off-by: David Négrier <d.negrier@thecodingmachine.com>
2021-11-08 14:30:54 +01:00
Bénédicte Q
b9bf27983f
Update maps/tests/TriggerMessageApi/script.js
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-11-08 10:51:18 +01:00
Bénédicte Q
7da975749c
Update maps/tests/TriggerMessageApi/script.js
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-11-08 10:51:08 +01:00
Benedicte Quimbert
854d8775d5 Edit documentation exemples 2021-11-03 19:24:24 +01:00
Benedicte Quimbert
f20c39f6a4 wip 2021-11-03 16:51:33 +01:00
David Négrier
603045bcad
Merge pull request #1549 from thecodingmachine/property-index
Create GameMapProperties index
2021-11-03 00:05:27 +01:00
Alexis Faizeau
5a3d510f05 Create GameMapProperties index 2021-11-02 10:52:25 +01:00
Alexis Faizeau
ec3120cf8f
Merge pull request #1546 from thecodingmachine/fix-room-api
Fix change layer api functions
2021-10-29 23:37:54 +02:00
Alexis Faizeau
dbd6ce5bdc Fix player movement tests 2021-10-29 23:30:02 +02:00
Alexis Faizeau
d4470568ec Fix change layer api functions 2021-10-29 23:16:36 +02:00
David Négrier
145117dc58
Merge pull request #1544 from thecodingmachine/property-layer-management
Implement on enters/leaves layer events
2021-10-29 19:46:42 +02:00
Alexis Faizeau
e1d454d834 Add enters/leaves layer with api test map 2021-10-29 19:45:03 +02:00
Alexis Faizeau
db82ae4b88 Replace the enter/leave zone by enter/leave layer on doc 2021-10-29 19:45:03 +02:00
Alexis Faizeau
f4df12e5ff Cowebsite properties manage by layer and not by property index 2021-10-29 19:45:03 +02:00
Alexis Faizeau
934e24f837 Implement on enter/leave layer events 2021-10-29 19:44:58 +02:00
Alexis Faizeau
0b08d9251e Fix link of cowebsite propeerty test map fix 2021-10-29 15:46:05 +02:00
David Négrier
60a82c5eb2
Merge pull request #1516 from thecodingmachine/iframeManager
Display multi co-websites
2021-10-29 15:33:56 +02:00
Alexis Faizeau
e216b6caf4 Handle landscape mobile with cowebsite 2021-10-29 15:23:09 +02:00
Kharhamel
6c78717d97 FIX: the admin sockets now uses a short live to check room authorization 2021-10-28 14:53:07 +02:00
Alexis Faizeau
68c626088d Add co-website icon on mobile landscape 2021-10-28 11:31:28 +02:00
Alexis Faizeau
b03e7ec8f6 Add how to have a jitsi & cowebsite on doc 2021-10-28 10:00:12 +02:00
grégoire parant
4d3bce0266
Merge pull request #1542 from thecodingmachine/HotFixLastRoomDefault
HotFix set last room for first connexion
2021-10-27 17:07:23 +02:00
Gregoire Parant
6c0d8942e5 HotFix set last room for first connexion
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-27 16:48:33 +02:00
grégoire parant
7f677cf5b9
Merge pull request #1541 from thecodingmachine/HotFixOnChatMessageEvent
Hot fix on chat message event
2021-10-27 14:46:15 +02:00
grégoire parant
1f3b712097
Merge pull request #1540 from thecodingmachine/TypoChatMessage
Typo Chat message Store
2021-10-27 14:29:53 +02:00
Gregoire Parant
f8ae189cee HotFix handler message in chat store
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-27 14:29:39 +02:00
Alexis Faizeau
c886feca79 Add max iframe count on doc 2021-10-27 12:12:42 +02:00
Gregoire Parant
385ea1360e Type Chat message Store
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-27 10:02:47 +02:00
Alexis Faizeau
820767db3d Add multi co website to the changelog 2021-10-27 09:47:15 +02:00
Kharhamel
65c472d936
Merge pull request #1539 from thecodingmachine/hotifxnodeApiToken
HOTFIX: now uses a specific secret token for the admin sockets
2021-10-26 15:47:31 +02:00
Kharhamel
d809682c08 HOTFIX: now uses a specific secret token for the admin sockets 2021-10-26 14:58:34 +02:00
Alexis Faizeau
ab1a9b358a Change favicon snatcher http to https 2021-10-26 14:16:00 +02:00
Alexis Faizeau
4538f6d915 Update cowebsite script map 2021-10-25 19:00:26 +02:00
Alexis Faizeau
fb7fe0dc0a Rename cowebsite API functions 2021-10-25 19:00:26 +02:00
Alexis Faizeau
fbff7491df Zoom x 2 thumbnail cowebsite 2021-10-25 19:00:26 +02:00
Alexis Faizeau
f84c4b3276 Refacto insert cowebsite 2021-10-25 19:00:26 +02:00
Gregoire Parant
251d14a470 Add new test for cowebsite and jitsi room
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-25 19:00:26 +02:00
Alexis Faizeau
5eb6c05189 Add a Jitsi room on co-website api test map 2021-10-25 19:00:26 +02:00
Alexis Faizeau
b81b1ff68b Implement new cowbesite system on API 2021-10-25 19:00:26 +02:00
Alexis Faizeau
c29c4bfaa4 Fix onChatMessage subscriber 2021-10-25 19:00:26 +02:00
Alexis Faizeau
da8cc661b7 Implement the new co website system 2021-10-25 19:00:26 +02:00
Alexis Faizeau
1ee0b28f66 Fix co website closing on exit zone 2021-10-25 19:00:26 +02:00
David Négrier
1efcbb4529
Merge pull request #1521 from thecodingmachine/change-player-depth
Change character depth to 0
2021-10-25 15:11:09 +02:00
Lurkars
78e0d1bead fix linter, cleanup 2021-10-21 16:53:24 +02:00
Lurkars
6832fe4990 use OIDC without admin api, option to disable anonymous login 2021-10-21 16:28:57 +02:00
David Négrier
14a31d81ea
Merge pull request #1529 from Floupp/fix/readme-typo
Change pusher host in readme from .testing to .localhost
2021-10-20 09:20:08 +02:00
Mathieu Reynaud
ee432341da Change pusher host from testing to localhost 2021-10-19 20:07:23 +02:00
David Négrier
b6d571500e
Merge pull request #1528 from thecodingmachine/api_chat_multiple_virtual_users
When there are many virtual users (generated by chat), only the name of a first user is displayed.
2021-10-18 15:02:21 +02:00
David Négrier
4a40c08578 Fixing chat message attributed to wrong user
When a new user entered a chat message, the message was still attributed to the last user who wrote.
2021-10-18 14:58:29 +02:00
David Négrier
4abf7208ff
Merge pull request #1524 from thecodingmachine/player-direction
Display the real sprite direction on character loaded
2021-10-18 14:37:01 +02:00
David Négrier
f8b506144d When there are many virtual users (generated by chat), only the name of a first user is displayed.
Adding a test case for this.
2021-10-18 14:34:47 +02:00
David Négrier
bbd6613558
Merge pull request #1527 from thecodingmachine/upgrade_type_guard
Upgrading @workadventure/tiled-map-type-guard to 1.0.3
2021-10-18 14:24:11 +02:00
David Négrier
b201165b81 Upgrading @workadventure/tiled-map-type-guard to 1.0.3
This will fix the issue with maps containing group layers.
2021-10-18 14:11:24 +02:00
Alexis Faizeau
c13839ce8d Display the real sprite direction on character loaded 2021-10-15 16:35:42 +02:00
David Négrier
958fc9eee8
Merge pull request #1523 from thecodingmachine/fix_back_forth_localhost
Fixing exit problem on localhost maps
2021-10-15 16:27:32 +02:00
David Négrier
70d5c7f658 Triggering onload even if file already loaded for files loaded via http:// 2021-10-15 16:14:17 +02:00
grégoire parant
79e83d3782
Merge pull request #1522 from thecodingmachine/HotFixContactPage
Fix share link for website
2021-10-15 15:44:44 +02:00
Gregoire Parant
a8d6024352 Fix share link for website
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-15 15:25:23 +02:00
David Négrier
8b76e5bc36 Adding test case for exits 2021-10-15 15:24:34 +02:00
David Négrier
79a5916057 Removing dead code 2021-10-15 15:08:06 +02:00
grégoire parant
a7699edd6d
Merge pull request #1520 from thecodingmachine/HotFixUserData
HotFix user data connection
2021-10-14 17:37:54 +02:00
Gregoire Parant
497a7c3467 Fix typo emails => email
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-14 17:33:53 +02:00
Alexis Faizeau
cdf4023928 Change character depth to 0 2021-10-14 17:32:27 +02:00
Gregoire Parant
b7692dd355 Fix local user useless
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-14 17:25:36 +02:00
Gregoire Parant
f87422187f HotFix user data connection
Create local store for user connected in SSO

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-14 17:22:43 +02:00
grégoire parant
ee906dc52b
Merge pull request #1517 from thecodingmachine/develop
Release 1.5.5
2021-10-12 20:52:42 +02:00
Kharhamel
524a6c2c4d
Merge pull request #1497 from thecodingmachine/betterAnalytics
FEATURE: analytics client now scrape user email and room instance
2021-10-12 13:52:14 +02:00
Kharhamel
726f52976d FEATURE: analytics client now scrape user email and room group 2021-10-11 16:30:01 +02:00
Kharhamel
d0c0f3e7fc
Merge pull request #1513 from thecodingmachine/editChangelog
FIX: edited changelog
2021-10-11 11:53:25 +02:00
Kharhamel
57bfc1001f FIX: edited changelog 2021-10-11 11:34:10 +02:00
David Négrier
3c9332f9c1
Merge pull request #1512 from thecodingmachine/updatePosthog
FIX: updated posthog client version and fixed a bug with its toolbar
2021-10-08 14:41:08 +02:00
Kharhamel
72583a58d9
Merge pull request #1509 from thecodingmachine/fixGroupCreation
FIX: if a conversion group move to another user, this user will be added to the group
2021-10-08 14:25:21 +02:00
Kharhamel
59fa68e063 FIX: updated posthog client version and fixed a bug with its toolbar 2021-10-08 11:55:27 +02:00
Kharhamel
5255847452 FIX: if a conversion group move to another user, this user will be added to the group 2021-10-08 11:02:58 +02:00
Kharhamel
60eefbce94
Merge pull request #1508 from thecodingmachine/fixSilentZones
FIX: being in a silent zone new forces mediaConstraints to false
2021-10-07 14:50:40 +02:00
Kharhamel
9dd3e8ff85 FIX: being in a silent zone new forces mediaConstraints to false 2021-10-06 17:59:20 +02:00
grégoire parant
900c53f499
Update icon message and profile (#1504)
- Add new icon profil pixel
 - Add new icon message pixel
 - Migrate message icon in svelt menu

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-06 15:36:42 +02:00
Gregoire Parant
2f2aa55fd7 Merge branch 'master' into develop
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-05 23:49:05 +02:00
grégoire parant
358d9a79d3
Add condition Hash for start layer (#1506)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-05 23:34:18 +02:00
grégoire parant
908b78fdda
HotFix mandatory login with ADMIN openid connexion (#1503)
Before anonymous connexion, we must get the details of the map and permit to check mandatory connexion and redirect user to login page.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-05 18:59:26 +02:00
grégoire parant
b33e271d2e
Merge pull request #1499 from thecodingmachine/develop
Release 1.5.3
2021-10-04 20:54:13 +02:00
Gregoire Parant
2db446889b Create emoji test
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-04 20:39:01 +02:00
Kharhamel
a265290e41
Merge pull request #1501 from thecodingmachine/fixEmoteMenu
FIX: fixes for the emnote menu
2021-10-04 15:12:53 +02:00
Kharhamel
02108ce977 FIX: fixes for the emnote menu 2021-10-04 14:43:19 +02:00
Kharhamel
7bb0175648
FIX: we now make sure to completly disable the old stream before attempting to create a new one (#1493)
* FIX: we now make sure to completly disable the old stream before attempting to create a new one

* FIX: disable audio optimization on chrome

* always reemit the stream on chrome

* Try fix on stop current stream

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Try fix on stop current stream

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Push fix microphone

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

Co-authored-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-10-02 23:58:33 +02:00
Valdo
f6fcb37d91
Updated README (logo, map, wording) (#1485)
Co-authored-by: Valdo Romao <v.romao@thecodingmachine.com>
2021-10-02 15:59:45 +02:00
Alexis Faizeau
8c3b708981
Remove audio manager range volume control by keys (#1489)
Co-authored-by: Alexis Faizeau <a.faizeau@workadventu.re>
2021-10-02 15:55:54 +02:00
David Négrier
a7424b9329
Merge pull request #1496 from thecodingmachine/fixCD
FIX: removed admin url from deeployer and changed starter map
2021-09-30 11:54:51 +02:00
Kharhamel
2e34420605 FIX: removed admin url from deeployer on develop and master and changed starter map 2021-09-30 11:51:41 +02:00
grégoire parant
1e69bb0f49
Manage redirect URL from admin and save in hydra via pusher (#1492)
Add redirect parameter url to connect user directly on private openId application

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-30 11:16:25 +02:00
David Négrier
2b5211d098
Merge pull request #1486 from thecodingmachine/fix-links
Fixing links in the documentation
2021-09-27 15:41:23 +02:00
David Négrier
7d758af900 Fixing .md link 2021-09-27 12:01:40 +02:00
David Négrier
ad5489c102 Adding edit URLs to allow people to directly propose changes 2021-09-27 11:32:57 +02:00
David Négrier
b8996d5abb Fixing links in the documentation 2021-09-27 11:13:35 +02:00
Kharhamel
8d1943d6e9
Merge pull request #1484 from thecodingmachine/fixExitUrl
FIX: initPositionFromLayerName will now prioritize its target layer rather than the start layer
2021-09-24 12:00:23 +02:00
Kharhamel
ce26294250 FIX: initPositionFromLayerName will now prioritize its target layer rather than the start layer 2021-09-24 11:54:19 +02:00
Kharhamel
4650f4e8cf
Merge pull request #1480 from ValdoTR/maps
Removed old maps and add starter-kit map
2021-09-24 10:58:31 +02:00
Valdo Romao
b44c219441 Added default map path 2021-09-24 09:53:02 +01:00
Kharhamel
bf0c333266
Merge pull request #1463 from thecodingmachine/dependabot/npm_and_yarn/front/axios-0.21.2
Bump axios from 0.21.1 to 0.21.2 in /front
2021-09-23 18:36:51 +02:00
Kharhamel
ff5c2c5e58
Merge pull request #1464 from thecodingmachine/dependabot/npm_and_yarn/back/axios-0.21.2
Bump axios from 0.21.1 to 0.21.2 in /back
2021-09-23 18:36:45 +02:00
Kharhamel
d2bf7b8fde
Merge pull request #1465 from thecodingmachine/dependabot/npm_and_yarn/pusher/axios-0.21.2
Bump axios from 0.21.1 to 0.21.2 in /pusher
2021-09-23 18:36:34 +02:00
Valdo Romao
e8ba9e9785 Removed old maps and add starter-kit map 2021-09-23 12:29:14 +01:00
GRL78
3f1c5246f8
TO MERGE : Contact page from Admin or Environment Variable (#1401)
* Contact page from Admin or Environment Variable

* Get contact page from admin by pusher

* Changes requested

* Modify contactPageStore management

* documentation environment variables

Co-authored-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-21 20:24:53 +02:00
Kharhamel
ccea46fe2b
Merge pull request #1476 from thecodingmachine/fixCustomWoka
FIX: added another catch case for default model
2021-09-21 17:45:31 +02:00
grégoire parant
d033b78c58
Update Youtube link markdown (#1477)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-21 16:07:57 +02:00
Kharhamel
8b099e5725 FIX: added another catch case for default model 2021-09-21 14:29:15 +02:00
Gregoire Parant
3f954d273c Merge branch 'master' into develop
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-21 02:37:56 +02:00
grégoire parant
e77d4dda84
Update favicon and logo to deploy new design (#1475)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-20 22:42:15 +02:00
Kharhamel
2fbf8f0a10
Merge pull request #1474 from Lurkars/twemojiEmoteMenuSvelte
fix wrong font name
2021-09-20 15:54:31 +02:00
Lurkars
781c69387c fix wrong font name 2021-09-20 15:22:54 +02:00
dependabot[bot]
8ecef9eadc
Bump axios from 0.21.1 to 0.21.2 in /front
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 12:34:07 +00:00
dependabot[bot]
16d45c921f
Bump axios from 0.21.1 to 0.21.2 in /back
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 12:34:04 +00:00
dependabot[bot]
62c163f11e
Bump axios from 0.21.1 to 0.21.2 in /pusher
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 12:34:04 +00:00
Kharhamel
9b13a6780c
Merge pull request #1437 from Lurkars/twemojiEmoteMenuSvelte
Twemoji emote menu svelte (upgrade of #1301)
2021-09-20 14:33:16 +02:00
David Négrier
0ecabd14f1 Switching API to use type="module" scripts
This allows using imports inside scripts imported by WorkAdventure out of the box (and therefore easily importing the scripting-api-extra without resorting to using a bundler)
2021-09-20 09:14:14 +02:00
Gregoire Parant
f247ec44f1 Merge branch 'master' into develop
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-18 12:20:02 +02:00
grégoire parant
8c96b514d4
HotFix to test hydra connexion (#1471) 2021-09-18 11:35:29 +02:00
Lurkars
63c4eeb4c7 Merge branch 'twemojiEmoteMenuSvelte' of github.com:thecodingmachine/workadventure into twemojiEmoteMenuSvelte 2021-09-16 18:20:42 +02:00
Lurkars
7922de10ff Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenuSvelte 2021-09-16 18:12:51 +02:00
grégoire parant
553902e52a
Add log for Oauth login connexion (#1468)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-16 17:57:14 +02:00
David Négrier
9f39cf154a
Merge pull request #1467 from thecodingmachine/master
Backporting changes to develop
2021-09-16 17:49:05 +02:00
David Négrier
8d0f53ada0 Merge branch 'develop' of github.com:thecodingmachine/workadventure 2021-09-16 17:04:43 +02:00
David Négrier
bc45c93932 Fixing Posthog env var 2021-09-16 17:03:49 +02:00
David Négrier
7ef27a0040 Updating Changelog 2021-09-16 16:46:48 +02:00
David Négrier
4728c3a59a Merge branch 'master' of github.com:thecodingmachine/workadventure 2021-09-16 16:46:27 +02:00
David Négrier
950ffaafda
Merge pull request #1466 from thecodingmachine/develop
Deploy 2021-09-16
2021-09-16 16:22:50 +02:00
Kharhamel
483191c521
Merge pull request #1458 from thecodingmachine/posthog
FEATURE: added posthog as new analytics tool
2021-09-16 15:24:27 +02:00
Kharhamel
2e111aa13a FEATURE: added posthog as new analytics tool 2021-09-16 15:16:10 +02:00
David Négrier
a3eebb05ba Fixing type of openWebsiteWidth in doc 2021-09-16 09:58:42 +02:00
David Négrier
74b5e2797f
Merge pull request #1459 from thecodingmachine/turn_off_audio_on_exit
Turn off audio on exit
2021-09-15 15:35:37 +02:00
David Négrier
801ec3bf4c Turn off audio on exit
If an exit zone is overlapping an audio zone, when exiting, the audio is stopped.
We do this by actually triggering the fact that a user should "leave" all active zones when exiting.
2021-09-15 15:28:55 +02:00
David Négrier
8a6419a3b7
Merge pull request #1457 from thecodingmachine/fix_yarn_not_working
fix yarn install not working
2021-09-15 11:50:50 +02:00
David Négrier
bb8583872b Fixing messages generation in Front container 2021-09-15 11:32:32 +02:00
David Négrier
0c374aba48
Merge pull request #1456 from thecodingmachine/jitsi-silent
Fixing silent zone not respected when exiting Jitsi
2021-09-15 11:27:50 +02:00
David Négrier
d26325d8dc Fixing silent zone not respected when exiting Jitsi
Now, when a silent zone is adjacent to a Jitsi, it is enforced, even after leaving the Jitsi zone
2021-09-15 11:16:23 +02:00
TabascoEye
5a855fb7e4
fix yarn install not working
problem for virtually all people trying self-hosting according to #1433, #738 and likely more
2021-09-15 10:43:01 +02:00
GRL78
680e538fd6
save button in settings close menu (#1451) 2021-09-14 16:43:00 +02:00
David Négrier
9006283c90
Merge pull request #1452 from Lurkars/audioPlayerImprovements
some fixes on the audio player controls
2021-09-14 14:41:40 +02:00
David Négrier
6ed4857b1d
Merge pull request #1450 from thecodingmachine/fixScrollChat
Chat scroll to bottom when it open
2021-09-14 14:39:42 +02:00
Lurkars
8c780f07c6 fix font 2021-09-14 11:41:51 +02:00
Lurkars
f1bd92fa52 use included twemoji mozilla font instead of loading external 2021-09-14 11:39:36 +02:00
GRL
ff3e844b68 chat scroll to bottom when it open 2021-09-14 09:36:49 +02:00
Lurkars
34d81b0e6c fix behaviour 2021-09-14 08:55:15 +02:00
Lurkars
91bc524e06 disable controls 2021-09-14 08:50:43 +02:00
Lurkars
beed50874b fix emotemenu on open jitsi rooms 2021-09-13 19:16:47 +02:00
David Négrier
01bd36ca3f Removing test in double 2021-09-13 18:58:00 +02:00
David Négrier
7cf9f8ff10
Merge pull request #1447 from thecodingmachine/fix_api_chat
Fixing broken chat API
2021-09-13 15:57:37 +02:00
David Négrier
f92b728a8e Fixing broken chat API 2021-09-13 14:50:02 +02:00
David Négrier
fae57e36e3
Merge pull request #1446 from thecodingmachine/develop
Deploy 2021-09-13
2021-09-13 11:27:22 +02:00
David Négrier
8b4764912a Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-09-13 10:47:02 +02:00
David Négrier
e3896bf5e7 Adding features to CHANGELOG 2021-09-13 10:45:32 +02:00
David Négrier
3be328af35
Merge pull request #1445 from thecodingmachine/fix-menu-pointer-too-large
Fixing broken sound controls
2021-09-13 10:38:42 +02:00
David Négrier
fbddd54059 Adding a test case for audio 2021-09-13 10:22:55 +02:00
David Négrier
f0b83663f6 Fixing broken sound controls
Because of the rework of the menu, the clickable zone for the menu was extending at the complete top of the screen, which caused interactive items at the top of the screen (like sound controls) to be broken.

This commit fixes this.
2021-09-13 10:06:08 +02:00
David Négrier
bfd418d8b5
Merge pull request #1436 from thecodingmachine/better_test_page
Adding more tests
2021-09-13 09:25:58 +02:00
David Négrier
62227bb15f
Merge pull request #1439 from thecodingmachine/increse_ilde_timeout
Fix disconnects after 5 minutes in Chrome
2021-09-13 09:25:35 +02:00
David Négrier
aa462258ff
Merge pull request #1441 from tabascoeye/patch-1
add the possibilities of "onaction" and message to  new "openTab" pro…
2021-09-13 09:20:56 +02:00
Lurkars
59c22c8dfc svelte check fix 2021-09-12 11:29:53 +02:00
Lurkars
e5b3088b5e Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenuSvelte 2021-09-12 11:22:46 +02:00
Lurkars
3080e1fdc7 improvements on svelte store + handling 2021-09-12 11:11:52 +02:00
TabascoEye
94517c0f4b
add the possibilities of "onaction" and message to new "openTab" property 2021-09-10 23:17:04 +02:00
David Négrier
05646718a9 Fix disconnects after 5 minutes in Chrome
This commit increases idle timeout for websocket connection

Issue: after 5 minutes of inactive tab (hidden tab) in Chrome, WorkAdventure was disconnected.

I believe Google was going in "intensive throttling" mode (see  https://developer.chrome.com/blog/timer-throttling-in-chrome-88/#intensive-throttling)
This means setTimeouts are run only once per minute.

And I believe the "keep alive" must be implemented with a "setTimeout" (one way or another even if I can't find a trace of this in the code). This would mean that the browser would send keep alive requests only once per minute.
But the pusher is configured to shut the connection after 30 seconds of idle activity.

Therefore, the pusher disconnects inactive Chrome tabs. By raising the Pusher idle timer to 2 minutes, we give a chance to Chrome to send a ping to the server in time (since Chrome won't send more than 1 ping per minute).
2021-09-10 18:30:36 +02:00
Lurkars
e553392d9d move twemoji menu to svelte 2021-09-10 16:57:21 +02:00
Kharhamel
352b05b1ea
Merge pull request #1431 from thecodingmachine/fixVideoHeight
FIX: the video element should not have a bigger height than its container
2021-09-10 16:54:47 +02:00
David Négrier
7cabf64b11 Adding more tests 2021-09-10 16:40:09 +02:00
Kharhamel
d071f5fa90 FIX: the video element should not have a bigger height than its container 2021-09-10 16:04:15 +02:00
Lurkars
b50253a529 Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenuSvelte 2021-09-10 15:10:11 +02:00
Lurkars
d23820227e Merge branch 'twemojiEmoteMenu' of github.com:Lurkars/workadventure into twemojiEmoteMenuSvelte 2021-09-10 14:58:49 +02:00
Kharhamel
7471da6c26
Merge pull request #1434 from tabascoeye/patch-1
explain new property jitsiWidth
2021-09-10 14:09:28 +02:00
TabascoEye
9f310383ba
explain new property jitsiWidth 2021-09-09 22:58:30 +02:00
David Négrier
5626e45f4a
Merge pull request #1430 from thecodingmachine/better_test_page
Improving design of the test page
2021-09-09 14:07:19 +02:00
David Négrier
e715ca42c4 Improving design of the test page 2021-09-09 11:35:17 +02:00
grégoire parant
1e6433a65e
Merge pull request #1429 from thecodingmachine/develop
Next release v1.5.0
2021-09-09 11:27:05 +02:00
David Négrier
c07d853588
Merge pull request #1428 from thecodingmachine/more_test
Adding a new test case to check video display from mobile
2021-09-09 11:15:36 +02:00
David Négrier
24cd17ac51 Adding a new test case to check video display on mobile 2021-09-09 10:41:17 +02:00
David Négrier
7432f15e27
Merge pull request #1427 from Lurkars/fixFlattenGroupLayers
Fix flatten group layers
2021-09-09 10:20:05 +02:00
Lurkars
0530735547 .gitignore to upstream 2021-09-09 08:52:24 +02:00
Lurkars
8dd404801a .gitignore to upstream 2021-09-09 08:51:20 +02:00
Lurkars
30b22d87a6 .gitignore to upstream 2021-09-09 08:50:57 +02:00
Lurkars
36df585a5e fix wrong layer names after re-enter room 2021-09-09 08:47:38 +02:00
Lurkars
1db11a45e3 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-09-09 08:37:28 +02:00
Gregoire Parant
2a0d3759b1 Merge branch 'develop'
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-08 18:26:48 +02:00
Gregoire Parant
3a3e5d5f3b Merge branch 'master' into develop
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Components/Menu/Menu.svelte
#	front/src/Components/Menu/ProfileSubMenu.svelte
#	front/src/Components/Menu/SettingsSubMenu.svelte
#	front/src/Connexion/ConnectionManager.ts
#	front/src/Stores/MediaStore.ts
#	front/src/Stores/MenuStore.ts
#	front/style/TextGlobalMessageSvelte-Style.scss
#	front/style/style.scss
2021-09-08 18:20:13 +02:00
GRL78
2ea7b0cff1
Menu style will adapt if iframe in map is opened (#1422) 2021-09-08 15:43:46 +02:00
David Négrier
65b9da926b
Adding the menu of the workadventu.re website in this repo (#1420)
Because the workadventu.re website documentation regarding map building directly comes from that repo, it makes sense to export the menu in the repo.
This way, when we add a new documentation page, we can edit the menu in the same pull request.
2021-09-08 14:28:29 +02:00
David Négrier
d7a5435d9e
Adding documentation for the new "openTab" property (#1419) 2021-09-08 14:27:40 +02:00
grégoire parant
6cf86ec8dc
Add play uri for login and register in hydra (#1421)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-08 13:39:46 +02:00
David Négrier
149b417d8d
Merge pull request #1417 from thecodingmachine/doc_special_zones
Migrating documentation to this repository
2021-09-08 10:43:29 +02:00
David Négrier
699097c55b Migrating all the map-building documentation to Github.
+ adding links to Youtube tutorials
2021-09-08 10:28:39 +02:00
David Négrier
9ccd967cb8 Adding special zone documentation and Typescript documentation
This commit splits the special zone documentation in 3 different pages (open website / meeting rooms / special zones).
It also migrates special zones doc and using-typescript doc to Github repository
2021-09-08 08:46:01 +02:00
Kharhamel
0a44e3b4a1
Merge pull request #1415 from thecodingmachine/fixChromeTracks
FIX: reimplemented the old stream behavior on bad navigators like chrome
2021-09-07 17:06:18 +02:00
kharhamel
fa9929757d FIX: reimplemented the old stream behavior on bad navigators like chrome 2021-09-07 16:39:44 +02:00
grégoire parant
f60678478b
Update right css (#1416)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-07 13:59:08 +02:00
Lurkars
09125621d8 update gitignore 2021-09-06 19:16:05 +02:00
Lurkars
b29f649822 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-09-06 18:23:40 +02:00
David Négrier
62682cb18c
Merge pull request #1414 from thecodingmachine/doc_variables
Adding a dedicated doc for variables
2021-09-06 16:12:17 +02:00
David Négrier
76362e81e8 Adding a dedicated doc for variables 2021-09-06 16:06:49 +02:00
Kharhamel
317fe28286
Merge pull request #1413 from thecodingmachine/frontpretty
Frontpretty
2021-09-06 14:35:50 +02:00
kharhamel
4160235b92 ran pretty on the front 2021-09-06 14:31:59 +02:00
kharhamel
7743bda3eb added yarn run pretty to the front ci 2021-09-06 14:27:01 +02:00
grégoire parant
bf1953fe22
Release v1.4.15 (#1411)
* audio player volume improvements

* Add workaround for #932

* Bump striptags from 3.1.1 to 3.2.0 in /messages

Bumps [striptags](https://github.com/ericnorris/striptags) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/ericnorris/striptags/releases)
- [Commits](https://github.com/ericnorris/striptags/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: striptags
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add anthoer note for https://github.com/thecodingmachine/workadventure/issues/932#issuecomment-867562208

* WIP: svelte menu

* temp

* temp

* Bump tar from 4.4.13 to 4.4.15 in /back

Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.15.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.13...v4.4.15)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* New menu svelte

* Migration of report menu in svelte

* Migration of registerCustomMenu for Menu in Svelte
Refactor subMenuStore
Suppression of old MenuScene and ReportMenu

* Suppression of HTML files that aren't use anymore

* New version of cache management (#1365)

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* migrate to svelte

* remove redundancy

* initial localUserStore volume

* Exit scene acess denied detected (#1369)

* Add auth token user to get right in admin and check if user have right

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update error show

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update token generation (#1372)

- Permit only decode token to get map details,
 - If user have token expired, set the token to null and reload the page. This feature will be updated when authentication stategy will be finished.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* GameManager has an attribute scenePlugin

* GameManager has an attribute scenePlugin

* Suppression of gameManager in IframeListener

* fix deeployer

* fix deeployer

* Fixing enter/leave event not properly sent on adjacent zones

On adjacent zones, the zone leave event was not properly triggered when leaving a zone for the zone next to it.
Closes #1366

* First pass on css

* First pass on css

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Improving popup

If a popup message is empty, only the buttons will be displayed (not the container)

Unrelated: the Sound.play method in the API now accepts 0 arguments.

* Third pass on css and reportMenu

* Correction following test

* Player return a the same position when after editing his profile

* Player return a the same position when after editing his profile (same as reconnection)

* Contact page only if environment variable exist

* Execute scripts of the map after creating gameScene

* Rollback on createPromise switched to public

* Bump tar from 6.1.0 to 6.1.10 in /pusher

Bumps [tar](https://github.com/npm/node-tar) from 6.1.0 to 6.1.10.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.1.0...v6.1.10)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add iframe submenu by scripting API
Delete menu by scripting API

* Removing ts-ignore

* REVIEW : Migration Menu and Report Menu in Svelte (#1363)

* WIP: svelte menu

* temp

* temp

* New menu svelte

* Migration of report menu in svelte

* Migration of registerCustomMenu for Menu in Svelte
Refactor subMenuStore
Suppression of old MenuScene and ReportMenu

* Suppression of HTML files that aren't use anymore

* fix deeployer

* First pass on css

* First pass on css

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Third pass on css and reportMenu

* Correction following test

* Contact page only if environment variable exist

* Update service worker

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Change requested

* Change requested

Co-authored-by: kharhamel <oognic@gmail.com>
Co-authored-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Refactor to only have one function registerMenuCommand
When selected custom menu is removed, go to settings menu
Allow iframe in custom menu to use Scripting API
Return menu object when it is registered, can call remove function on it

* Correct bad change

* Add types file in API

* Add types file in API

* Fixing "has/in" on variables proxy object

When using WA.state, using `"myVariable" in WA.state` would always return false.
This is now fixed by adding a "has" method on the Proxy class.

Also, added a `WA.state.hasVariable` method.

* Add documentation
delete unused test map

* Properties changed via the Iframe API now trigger changes directly

Changes performed in WA.room.setPropertyLayer now have a real-time impact.
If the property is changed on a layer the current player is on, the changes will be triggered.

* documentation and CHANGELOG

* add possibility to set size of coWebsite and Jitsis via map property

* Update GameScene.ts

typo fixed

* Update CoWebsiteManager.ts

typos and style

* Update CoWebsiteManager.ts

yet another typo

* FIX: media tracks were not readded to a 3rd person in some situations

* fix ReportMenu (#1397)

* remove the package systeminformation from back

* Bump url-parse from 1.5.1 to 1.5.3 in /front

Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump tar from 4.4.15 to 4.4.19 in /back

Bumps [tar](https://github.com/npm/node-tar) from 4.4.15 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.15...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump path-parse from 1.0.6 to 1.0.7 in /messages

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* openTabPropertyKey (create new props in own file)

* Bump path-parse from 1.0.6 to 1.0.7 in /uploader

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump path-parse from 1.0.6 to 1.0.7 in /front

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump path-parse from 1.0.6 to 1.0.7 in /back

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump path-parse from 1.0.6 to 1.0.7 in /maps

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* FEATURE: improved the mediaStore code to disable tracks instead of deleting them

* Bump path-parse from 1.0.6 to 1.0.7 in /benchmark

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* added jitsiTypes

* renamed

* Allowing variables nested in group layers

Up until this commit, variables nested in object layers inside group layers where not found by the front nor the back.
This PR changes analysis so that variables can be detected.

* FIX: fixed a circular dependancy in stores by rewriting createPeerStore() and createScreenSharingPeerStore()

* WIP: Bypass camera scene (#1337)

* Set new local camera setup variable

* Finish by pass video settings

 - TODO add button to update camera settings

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Merge branch 'develop' into jumpVideoCamera

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Connexion/LocalUserStore.ts
#	front/src/Phaser/Components/Loader.ts
#	front/src/Phaser/Game/GameManager.ts
#	front/src/Phaser/Login/EnableCameraScene.ts

* Add menu to open enable camera scene

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish jump camera setup

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Active authentication Oauth (#1377)

* Active authentication Oauth

 - Google authentication
 - GitHub authentication
 - Linkedin authentication

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish connexion et get user info connexion

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Fix lint error

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Change the expires token for 30 days

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update connexion stratgey

 - Set last room when it will be created and not when connexion is openned
 - Add '/login' end point permit to logout and open iframe to log user
 - Add logout feature permit to logout in front

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Implement logout and revoke token with hydra

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Fix pull develop conflict

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Profile url (#1399)

* Create function that permit to get profile URL

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Continue profil user

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Add menu and logout button

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update last room use

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Profile callback permit to get url profile setting from admin

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish profile show

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Delete profileUrl will be not use today

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Correct lint

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update size of iframe

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Delete console log

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update feedback ARP

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Emote silent zone (#1342)

* Add an emote when the user is in silent zone

* Update silent icon strategy

* Update strategy for silent zone

 - Add svelte store
 - Show silent zone indication and replace camera

This update permit to hide silent zone when user is in Jitsi discussion

* Fix css silent zone

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Hotfix media constraint error

 - Create error to manage displayed warning when we try to access on media with no constraint video and audio
 - Fix disabled microphone if we try to active and we don't have right or there is an error.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

Co-authored-by: Lurkars <git@8lh.de>
Co-authored-by: Guy Sheffer <guysoft@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: kharhamel <oognic@gmail.com>
Co-authored-by: GRL <g.lesniewski@thecodingmachine.com>
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
Co-authored-by: GRL78 <80678534+GRL78@users.noreply.github.com>
Co-authored-by: ¯\_(ツ)_/¯ <tabascoeye@gmail.com>
Co-authored-by: Kharhamel <Kharhamel@users.noreply.github.com>
Co-authored-by: jonny <ga86lad@mytum.de>
2021-09-05 19:51:33 +02:00
Gregoire Parant
f2ca021740 Hotfix media constraint error
- Create error to manage displayed warning when we try to access on media with no constraint video and audio
 - Fix disabled microphone if we try to active and we don't have right or there is an error.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-05 19:36:57 +02:00
grégoire parant
4f0bb95a38
Emote silent zone (#1342)
* Add an emote when the user is in silent zone

* Update silent icon strategy

* Update strategy for silent zone

 - Add svelte store
 - Show silent zone indication and replace camera

This update permit to hide silent zone when user is in Jitsi discussion

* Fix css silent zone

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-05 18:36:22 +02:00
grégoire parant
d2b8d7dc04
Active authentication Oauth (#1377)
* Active authentication Oauth

 - Google authentication
 - GitHub authentication
 - Linkedin authentication

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish connexion et get user info connexion

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Fix lint error

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Change the expires token for 30 days

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update connexion stratgey

 - Set last room when it will be created and not when connexion is openned
 - Add '/login' end point permit to logout and open iframe to log user
 - Add logout feature permit to logout in front

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Implement logout and revoke token with hydra

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Fix pull develop conflict

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Profile url (#1399)

* Create function that permit to get profile URL

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Continue profil user

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Add menu and logout button

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update last room use

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Profile callback permit to get url profile setting from admin

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish profile show

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Delete profileUrl will be not use today

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Correct lint

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update size of iframe

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Delete console log

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update feedback ARP

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-05 18:17:49 +02:00
grégoire parant
a0d863569b
WIP: Bypass camera scene (#1337)
* Set new local camera setup variable

* Finish by pass video settings

 - TODO add button to update camera settings

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Merge branch 'develop' into jumpVideoCamera

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/src/Connexion/LocalUserStore.ts
#	front/src/Phaser/Components/Loader.ts
#	front/src/Phaser/Game/GameManager.ts
#	front/src/Phaser/Login/EnableCameraScene.ts

* Add menu to open enable camera scene

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Finish jump camera setup

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-09-04 21:31:36 +02:00
Kharhamel
ce16dab65f
Merge pull request #1410 from thecodingmachine/betterMEdiaStore
FIX: fixed a circular dependancy in stores
2021-09-03 17:27:12 +02:00
kharhamel
ba5fa06306 FIX: fixed a circular dependancy in stores by rewriting createPeerStore() and createScreenSharingPeerStore() 2021-09-03 17:16:31 +02:00
Kharhamel
6cb0f14e5a
Merge pull request #919 from Lurkars/audioPlayerImprovements
audio player volume improvements
2021-09-03 11:50:23 +02:00
David Négrier
86858a176e
Merge pull request #1406 from thecodingmachine/fix/recursive_variables
Allowing variables nested in group layers
2021-09-02 18:37:27 +02:00
David Négrier
68a4772627 Allowing variables nested in group layers
Up until this commit, variables nested in object layers inside group layers where not found by the front nor the back.
This PR changes analysis so that variables can be detected.
2021-09-02 18:05:55 +02:00
Kharhamel
8d2da6bdc7
Merge pull request #1405 from jonnytest1/opentab2
openTabPropertyKey (create new props in own file)
2021-09-02 17:19:20 +02:00
Lurkars
49b1a55042 Merge branch 'develop' of github.com:thecodingmachine/workadventure into audioPlayerImprovements 2021-09-01 19:25:37 +02:00
Lurkars
cc048f9b20 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-09-01 19:25:11 +02:00
Lurkars
e584c16aaa socket 2021-09-01 19:25:05 +02:00
jonny
606e9093e1 renamed 2021-09-01 18:16:31 +02:00
jonny
181232c1e6 added jitsiTypes 2021-09-01 17:55:23 +02:00
Kharhamel
1d5ad96646
Merge pull request #1357 from thecodingmachine/dependabot/npm_and_yarn/benchmark/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /benchmark
2021-09-01 17:48:28 +02:00
dependabot[bot]
949da0529f
Bump path-parse from 1.0.6 to 1.0.7 in /benchmark
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 15:48:20 +00:00
Kharhamel
295d413fdc
Merge pull request #1358 from thecodingmachine/dependabot/npm_and_yarn/maps/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /maps
2021-09-01 17:48:14 +02:00
Kharhamel
04fe8fdd1e
Merge pull request #1359 from thecodingmachine/dependabot/npm_and_yarn/back/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /back
2021-09-01 17:48:01 +02:00
Kharhamel
8f31380084
Merge pull request #1360 from thecodingmachine/dependabot/npm_and_yarn/uploader/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /uploader
2021-09-01 17:47:48 +02:00
Kharhamel
93238abd76
Merge pull request #1361 from thecodingmachine/dependabot/npm_and_yarn/front/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /front
2021-09-01 17:47:34 +02:00
Kharhamel
3191930fdb
Merge pull request #1208 from thecodingmachine/dependabot/npm_and_yarn/messages/striptags-3.2.0
Bump striptags from 3.1.1 to 3.2.0 in /messages
2021-09-01 17:41:35 +02:00
Kharhamel
095a486621
Merge pull request #1402 from thecodingmachine/betterMEdiaStore
FEATURE: improved the mediaStore code to disable tracks instead of deleting them
2021-09-01 17:30:59 +02:00
kharhamel
52fe79df47 FEATURE: improved the mediaStore code to disable tracks instead of deleting them 2021-09-01 17:14:05 +02:00
David Négrier
4fac9eb928 Adding "collides" video to documentation 2021-09-01 16:11:55 +02:00
dependabot[bot]
e2b8d3b6ef
Bump path-parse from 1.0.6 to 1.0.7 in /maps
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 13:10:28 +00:00
dependabot[bot]
1b5042ef6a
Bump path-parse from 1.0.6 to 1.0.7 in /back
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 13:10:28 +00:00
dependabot[bot]
3f143ba912
Bump path-parse from 1.0.6 to 1.0.7 in /front
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 13:10:14 +00:00
dependabot[bot]
80601ae432
Bump path-parse from 1.0.6 to 1.0.7 in /uploader
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 13:10:13 +00:00
Kharhamel
49c2ba3c4b
Merge pull request #1362 from thecodingmachine/dependabot/npm_and_yarn/messages/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /messages
2021-09-01 15:09:19 +02:00
jonny
0272e4f691 merged in develop again 2021-09-01 14:55:29 +02:00
jonny
7971daa27f openTabPropertyKey (create new props in own file) 2021-09-01 14:50:48 +02:00
Kharhamel
ad60993b9a
Merge pull request #1398 from tabascoeye/develop
add possibility to set size of coWebsite and Jitsis via map property
2021-09-01 14:42:41 +02:00
dependabot[bot]
7244fcd128
Bump path-parse from 1.0.6 to 1.0.7 in /messages
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 12:35:56 +00:00
Kharhamel
c0547637b5
Merge pull request #1404 from thecodingmachine/dependabot/npm_and_yarn/back/tar-4.4.19
Bump tar from 4.4.15 to 4.4.19 in /back
2021-09-01 14:33:57 +02:00
Kharhamel
5315628a10
Merge pull request #1403 from thecodingmachine/removesysteminformation
remove the package systeminformation from back
2021-09-01 14:29:05 +02:00
dependabot[bot]
df0546a2f3
Bump tar from 4.4.15 to 4.4.19 in /back
Bumps [tar](https://github.com/npm/node-tar) from 4.4.15 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.15...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 12:28:03 +00:00
Kharhamel
4f8273bae7
Merge pull request #1356 from thecodingmachine/dependabot/npm_and_yarn/front/url-parse-1.5.3
Bump url-parse from 1.5.1 to 1.5.3 in /front
2021-09-01 14:27:18 +02:00
Kharhamel
b4501a4d2a
Merge pull request #1200 from guysoft/patch-1
Add workaround for #932
2021-09-01 14:26:22 +02:00
dependabot[bot]
96ff1f3af1
Bump url-parse from 1.5.1 to 1.5.3 in /front
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 12:23:36 +00:00
kharhamel
bc9131119f remove the package systeminformation from back 2021-09-01 14:21:26 +02:00
GRL78
19baf7f582
fix ReportMenu (#1397) 2021-09-01 10:11:12 +02:00
Kharhamel
d7b552a513
Merge pull request #1400 from thecodingmachine/bugA3
FIX: media tracks were not readded to a 3rd person in some situations
2021-08-31 16:30:41 +02:00
kharhamel
1e20466f74 FIX: media tracks were not readded to a 3rd person in some situations 2021-08-31 16:29:23 +02:00
TabascoEye
a0d73f27d9
Update CoWebsiteManager.ts
yet another typo
2021-08-30 19:51:14 +02:00
TabascoEye
e6ae343975
Update CoWebsiteManager.ts
typos and style
2021-08-30 19:44:50 +02:00
TabascoEye
da03e60de4
Update GameScene.ts
typo fixed
2021-08-30 19:42:18 +02:00
¯\_(ツ)_/¯
ae3e2a09d9 add possibility to set size of coWebsite and Jitsis via map property 2021-08-30 19:32:02 +02:00
David Négrier
d2816220eb
Merge pull request #1395 from thecodingmachine/triggerOnSetLayer
Properties changed via the Iframe API now trigger changes directly
2021-08-27 17:41:58 +02:00
David Négrier
7576fbbe6d
Merge pull request #1392 from thecodingmachine/iframeMenuScript
Iframe menu script
2021-08-27 17:41:04 +02:00
GRL
12108bc529 documentation and CHANGELOG 2021-08-27 16:28:59 +02:00
David Négrier
10c08dea6d
Merge pull request #1393 from thecodingmachine/variableHasProxy
Fixing "has/in" on variables proxy object
2021-08-27 15:07:50 +02:00
David Négrier
4536a63e69 Properties changed via the Iframe API now trigger changes directly
Changes performed in WA.room.setPropertyLayer now have a real-time impact.
If the property is changed on a layer the current player is on, the changes will be triggered.
2021-08-27 15:05:14 +02:00
GRL
ebcf4a6ae3 Add documentation
delete unused test map
2021-08-27 14:49:57 +02:00
David Négrier
a0d3685227 Fixing "has/in" on variables proxy object
When using WA.state, using `"myVariable" in WA.state` would always return false.
This is now fixed by adding a "has" method on the Proxy class.

Also, added a `WA.state.hasVariable` method.
2021-08-27 11:29:59 +02:00
GRL
cb7b98de0d Merge branch 'iframeMenuScript' of github.com:thecodingmachine/workadventure into iframeMenuScript 2021-08-27 11:18:58 +02:00
GRL
706f531ca2 Add types file in API 2021-08-27 11:17:48 +02:00
GRL
12a150c817 Add types file in API 2021-08-27 11:14:07 +02:00
GRL
a195870cfb Correct bad change 2021-08-27 11:12:23 +02:00
GRL
833c15b2d5 Merge branch 'develop' of github.com:thecodingmachine/workadventure into iframeMenuScript 2021-08-27 10:44:32 +02:00
GRL
cf7bfe79ca Refactor to only have one function registerMenuCommand
When selected custom menu is removed, go to settings menu
Allow iframe in custom menu to use Scripting API
Return menu object when it is registered, can call remove function on it
2021-08-27 10:34:03 +02:00
GRL78
7c956d1481
REVIEW : Migration Menu and Report Menu in Svelte (#1363)
* WIP: svelte menu

* temp

* temp

* New menu svelte

* Migration of report menu in svelte

* Migration of registerCustomMenu for Menu in Svelte
Refactor subMenuStore
Suppression of old MenuScene and ReportMenu

* Suppression of HTML files that aren't use anymore

* fix deeployer

* First pass on css

* First pass on css

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Second pass on css and reportMenu

* Third pass on css and reportMenu

* Correction following test

* Contact page only if environment variable exist

* Update service worker

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Change requested

* Change requested

Co-authored-by: kharhamel <oognic@gmail.com>
Co-authored-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-26 12:01:07 +02:00
David Négrier
5cd3ab4b4c Removing ts-ignore 2021-08-25 09:30:05 +02:00
GRL
f3c4d344b3 Add iframe submenu by scripting API
Delete menu by scripting API
2021-08-24 17:35:06 +02:00
David Négrier
29c1ea25c7
Merge pull request #1391 from thecodingmachine/dependabot/npm_and_yarn/pusher/tar-6.1.10
Bump tar from 6.1.0 to 6.1.10 in /pusher
2021-08-24 16:17:04 +02:00
dependabot[bot]
32290de8dd
Bump tar from 6.1.0 to 6.1.10 in /pusher
Bumps [tar](https://github.com/npm/node-tar) from 6.1.0 to 6.1.10.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.1.0...v6.1.10)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-24 09:59:46 +00:00
David Négrier
428fbaae02
Merge pull request #1338 from thecodingmachine/dependabot/npm_and_yarn/back/tar-4.4.15
Bump tar from 4.4.13 to 4.4.15 in /back
2021-08-24 11:58:54 +02:00
Gregoire Parant
54fab3d233 Merge branch 'master' into develop 2021-08-24 10:45:03 +02:00
GRL
49eb28dacf Merge branch 'develop' of github.com:thecodingmachine/workadventure into menuInSvelte 2021-08-24 09:38:24 +02:00
David Négrier
60b6e7baa1
Merge pull request #1375 from thecodingmachine/ListenIFrameWaitCreate
Execute scripts of the map after creating gameScene
2021-08-23 19:12:01 +02:00
David Négrier
8c43c2e6e8 Rollback on createPromise switched to public 2021-08-23 18:54:00 +02:00
GRL
ad95fa5e11 Execute scripts of the map after creating gameScene 2021-08-23 18:53:59 +02:00
David Négrier
41c31d3d2f
Merge pull request #1381 from thecodingmachine/samePlaceAfterEditProfile
Player return a the same position when after editing his profile
2021-08-23 18:36:43 +02:00
David Négrier
bf6ce94b80 Merge branch 'develop' of github.com:thecodingmachine/workadventure into samePlaceAfterEditProfile 2021-08-23 18:04:09 +02:00
GRL
2f76a24dff Contact page only if environment variable exist 2021-08-23 17:30:07 +02:00
David Négrier
7fdbcde71c
Merge pull request #1388 from thecodingmachine/BackToLinePopUp
Update escapeHtml
2021-08-23 11:25:04 +02:00
Gregoire Parant
99a9b5f9a2 Update strategy to use css
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-23 10:20:48 +02:00
Gregoire Parant
c4a9da41ba Merge branch 'master' into BackToLinePopUp 2021-08-23 09:45:32 +02:00
Gregoire Parant
8c4ead8421 Add "\n\r" to match
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-23 09:43:43 +02:00
Gregoire Parant
da00fa7868 Update escapeHtml
Update escapeHtml in HtmlUtils class to create paragraphe when user have \r\n in popup text

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-23 09:16:22 +02:00
David Négrier
1f7e964a7d
Merge pull request #1386 from thecodingmachine/master
Backporting master to develop
2021-08-23 09:01:19 +02:00
David Négrier
7e4292f0fd
Merge pull request #1376 from thecodingmachine/deployerFix
fix deeployer
2021-08-20 17:11:10 +02:00
David Négrier
9a150cbcca
Merge pull request #1385 from thecodingmachine/images_in_doc
Migrating images from the WorkAdventure website to the docs/ directory
2021-08-20 17:10:46 +02:00
David Négrier
821e224aac Migrating images from the WorkAdventure website to the docs/ directory
Images belong to the docs, so they should sit next to the documentation files in the /docs directory.
2021-08-20 16:56:03 +02:00
GRL
edfe440c6e Merge branch 'develop' of github.com:thecodingmachine/workadventure into menuInSvelte 2021-08-20 16:18:45 +02:00
GRL
c2b3d23ec0 Player return a the same position when after editing his profile (same as reconnection) 2021-08-20 09:49:37 +02:00
Gregoire Parant
4d4c9c8c6e Merge branch 'master' into develop 2021-08-19 18:50:34 +02:00
grégoire parant
e32f433688
Update cache version (#1383)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-19 18:48:24 +02:00
Gregoire Parant
86c32cf9ff Merge branch 'master' into develop
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

# Conflicts:
#	front/dist/service-worker-prod.js
2021-08-19 18:31:30 +02:00
grégoire parant
1ffd198b00
Update cache management (#1382)
Change strategy of cache management. Today we don't have version of map building so we cannot use cache correctly. The idea is to have a less cache and keep HTPP cache management with GET method.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-19 18:23:30 +02:00
GRL
0c796dff90 Player return a the same position when after editing his profile 2021-08-19 17:22:16 +02:00
GRL
2ebf05f7d6 Correction following test 2021-08-19 11:17:46 +02:00
David Négrier
5fa8c1de9a
Merge pull request #1379 from thecodingmachine/popup_improvements
Improving popup
2021-08-19 09:52:35 +02:00
GRL
d6bd883c94 Third pass on css and reportMenu 2021-08-18 15:34:26 +02:00
David Négrier
8a64491952 Improving popup
If a popup message is empty, only the buttons will be displayed (not the container)

Unrelated: the Sound.play method in the API now accepts 0 arguments.
2021-08-18 11:53:41 +02:00
GRL
0d29ef5787 Merge branch 'menuInSvelte' of github.com:thecodingmachine/workadventure into menuInSvelte 2021-08-18 11:30:28 +02:00
GRL
5a8e7d277f Second pass on css and reportMenu 2021-08-18 11:30:11 +02:00
GRL
ac825bf725 Second pass on css and reportMenu 2021-08-18 11:20:57 +02:00
GRL
4c3097155b Second pass on css and reportMenu 2021-08-18 11:15:46 +02:00
Lurkars
f3cfe7ec82 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-08-17 20:24:25 +02:00
GRL
9e5cc3b9a7 First pass on css 2021-08-17 15:17:29 +02:00
GRL
096baa8897 First pass on css 2021-08-17 14:44:43 +02:00
grégoire parant
0bfac1a164
Update cache API index (#1378)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-17 13:26:20 +02:00
David Négrier
06be65c12f
Merge pull request #1368 from thecodingmachine/fix_zone_enter_exit
Fixing enter/leave event not properly sent on adjacent zones
2021-08-17 10:08:51 +02:00
David Négrier
1d45bab46d Fixing enter/leave event not properly sent on adjacent zones
On adjacent zones, the zone leave event was not properly triggered when leaving a zone for the zone next to it.
Closes #1366
2021-08-17 10:04:11 +02:00
GRL
82b95faa53 fix deeployer 2021-08-16 14:45:22 +02:00
GRL
d0a85b0870 fix deeployer 2021-08-16 14:33:53 +02:00
GRL
aa9e5c4543 Merge branch 'develop' of github.com:thecodingmachine/workadventure into menuInSvelte 2021-08-16 14:19:28 +02:00
David Négrier
1845b8f66e
Merge pull request #1374 from thecodingmachine/GameManagerRefactor
GameManager has an attribute scenePlugin
2021-08-16 11:59:30 +02:00
GRL
151e63ff91 Suppression of gameManager in IframeListener 2021-08-16 11:56:00 +02:00
GRL
736ac19ed0 Merge remote-tracking branch 'origin/GameManagerRefactor' into GameManagerRefactor 2021-08-16 11:50:22 +02:00
GRL
d2413896c7 GameManager has an attribute scenePlugin 2021-08-16 11:50:09 +02:00
GRL
482a6da1d8 GameManager has an attribute scenePlugin 2021-08-16 11:43:29 +02:00
grégoire parant
005a3c5a0d
Release 1.4.14 (#1370)
* New version of cache management (#1365)

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Exit scene acess denied detected (#1369)

* Add auth token user to get right in admin and check if user have right

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update error show

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update token generation (#1372)

- Permit only decode token to get map details,
 - If user have token expired, set the token to null and reload the page. This feature will be updated when authentication stategy will be finished.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-15 23:13:48 +02:00
grégoire parant
8d57886bae
Update token generation (#1372)
- Permit only decode token to get map details,
 - If user have token expired, set the token to null and reload the page. This feature will be updated when authentication stategy will be finished.

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-15 22:51:06 +02:00
grégoire parant
02a21209ec
Exit scene acess denied detected (#1369)
* Add auth token user to get right in admin and check if user have right

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>

* Update error show

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-15 08:51:35 +02:00
Lurkars
aa38d1a5bd initial localUserStore volume 2021-08-11 20:29:48 +02:00
Lurkars
0d27b4ad43 remove redundancy 2021-08-11 20:07:09 +02:00
Lurkars
3702173cd4 migrate to svelte 2021-08-11 20:01:51 +02:00
Lurkars
e8104f63ac Merge branch 'develop' of github.com:thecodingmachine/workadventure into audioPlayerImprovements 2021-08-11 19:55:36 +02:00
Lurkars
5b979fa151 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-08-11 19:54:36 +02:00
grégoire parant
f7daf16ac5
New version of cache management (#1365)
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-11 17:09:17 +02:00
GRL
f4ce5f9a3b Merge branch 'ReportMenuSvelte' of github.com:thecodingmachine/workadventure into menuInSvelte 2021-08-11 15:04:47 +02:00
GRL
46a2e3f453 Suppression of HTML files that aren't use anymore 2021-08-11 14:23:34 +02:00
GRL
e86892b9a5 Merge branch 'develop' of github.com:thecodingmachine/workadventure into MenuSvelte 2021-08-11 14:13:31 +02:00
GRL
8105e966ff Migration of registerCustomMenu for Menu in Svelte
Refactor subMenuStore
Suppression of old MenuScene and ReportMenu
2021-08-11 14:07:34 +02:00
Gregoire Parant
45a56c2e02 HotFix feedback svelte continuous integration
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-11 10:09:04 +02:00
Gregoire Parant
434b112c65 Improve service worker store managment
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
2021-08-11 10:01:56 +02:00
grégoire parant
bced495570
Add comment use service worker (#1355) 2021-08-10 23:10:56 +02:00
grégoire parant
c7fdfed00c
Improve mobile camera shown (#1354)
- Add new store to send mobile size
 - Update style to show video for mobile size
2021-08-10 22:35:26 +02:00
grégoire parant
22a46a98ea
Improve service worker (#1353)
* Improve service worker

 - Add new env variable in WebPack "NODE_ENV"
 - Add new service worker for mode dev that permit to by pass response in cache storage
 - Add new WorkAdventure icon

* Remove console.log

* Add service worker file prod and dev
2021-08-10 22:34:46 +02:00
Lurkars
fc1a7afd9a Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-08-10 14:20:39 +02:00
grégoire parant
1db2e2aba9
Update style of microphone (#1352)
- Active microphone close when user haven't microphone in the discussion
2021-08-10 10:12:31 +02:00
grégoire parant
dbe7dc4ce0
Merge pull request #1348 from thecodingmachine/develop
Release v1.4.14
2021-08-09 23:15:31 +02:00
GRL
9c1926f636 Merge branch 'develop' of github.com:thecodingmachine/workadventure into MenuSvelte 2021-08-09 16:59:12 +02:00
GRL
d10e2dbca7 Migration of report menu in svelte 2021-08-09 16:56:28 +02:00
grégoire parant
a5b44be6a1
Update JWT expires days (#1349) 2021-08-09 16:37:24 +02:00
grégoire parant
ddecf48697
Update JWT expires days (#1347) 2021-08-09 16:31:55 +02:00
GRL
56fa2e49f6 New menu svelte 2021-08-09 14:49:17 +02:00
Datalog-Mindhack
bc24a6b1db
Update package.json (#1344)
Thans for your Merge Request 🚀
2021-08-09 14:36:53 +02:00
Lurkars
06290cdd78 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-08-08 19:33:58 +02:00
Gregoire Parant
154f8f03da Merge branch 'master' into develop 2021-08-06 18:29:09 +02:00
grégoire parant
fbcb9d898d
Update report message (#1343) 2021-08-06 18:28:18 +02:00
felixdoerre
d051650457
Delete sol_intérieur.png (#1341)
The file was initially renamed but accidentally re-added later. Removing it finished the move.
2021-08-06 17:23:22 +02:00
Gregoire Parant
af613f5b5b Merge branch 'master' into develop 2021-08-06 15:53:33 +02:00
GRL78
e0fb31fc58
WIP: Migrate AudioManager in Svelte (#1325)
* Migrate AudioManager in Svelte

* use import type when needed
2021-08-06 09:11:17 +02:00
David Négrier
ac282db1ac Removing pointless console.log 2021-08-05 17:21:55 +02:00
David Négrier
56cf535551
Merge pull request #1312 from thecodingmachine/iframe_in_map
Adding the ability to inject websites directly inside maps
2021-08-05 12:44:23 +02:00
David Négrier
6b9b999996 Making embedded iframes scriptable using the WA.room.website namespace. 2021-08-05 12:37:05 +02:00
David Négrier
5bb29e99ba Adding a "allowApi" property to authorize the API in a website. 2021-08-05 12:30:07 +02:00
David Négrier
ce3c53ae3f Adding the ability to inject websites directly inside maps
This PR adds the ability to inject a website INSIDE a map (as an iframe inside a Phaser HTML object)
The iFrame will be rendered transparently, unless you set a background-color on the body, which opens a number of cool possibilities.

Needs to be done: allowing the iframe API in those iframes.
2021-08-05 12:30:05 +02:00
David Négrier
a09f27b448
Merge pull request #1227 from jonnytest1/trigger-message-refv3
trigger message api refactorv3
2021-08-05 12:18:55 +02:00
David Négrier
570110f831 Fixing openWebsiteTriggerMessage not hidden when moving out of zone. 2021-08-05 12:07:12 +02:00
David Négrier
bc1c6a4986 Refactoring displayActionMessage signature. Now accepting an options object. This should allow for more options in the future. 2021-08-05 12:02:00 +02:00
David Négrier
87e4367455 Refactoring layoutManagerActionStore. It now supports an uuid field.
layoutManagerVisibilityStore is now a derived field from layoutManagerActionStore.
2021-08-05 11:19:28 +02:00
GRL
2cd5b7f0a8 Merge branch 'develop' of github.com:thecodingmachine/workadventure into MenuSvelte 2021-08-05 10:01:23 +02:00
David Négrier
92fee33b64 Merge branch 'develop' of github.com:thecodingmachine/workadventure into trigger-message-refv3 2021-08-05 09:24:05 +02:00
David Négrier
d1e5d57459 Changing the method name from "triggerMessage" to "displayActionMessage".
Generally speaking, I like to call the message at the bottom an "action message".
And things can "trigger" it, but in the case of a method that actually proactively displays the message, I find "displayActionMessage" to be a better name.

Also, removing package-lock files and improving code style
2021-08-05 09:17:33 +02:00
dependabot[bot]
2e3489a489
Bump tar from 4.4.13 to 4.4.15 in /back
Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.15.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.13...v4.4.15)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 03:09:10 +00:00
grégoire parant
d644b43e24
Merge pull request #1330 from thecodingmachine/layoutManagerSvelte
Migrate layoutManager in Svelte
2021-08-04 21:01:29 +02:00
grégoire parant
7c11441f50
Merge pull request #1336 from thecodingmachine/HotFixJoystickMobile
Fix joystick postion
2021-08-04 18:42:31 +02:00
Gregoire Parant
190007a21f Fix joystick postion
- Aply new size after open and close iframe and permit to keep the good position of the joystick on the WorkAdventure screen
2021-08-04 18:07:04 +02:00
grégoire parant
238d5c22db
Merge pull request #1334 from thecodingmachine/PWAIcon
Update PWA apple icon
2021-08-04 15:05:57 +02:00
Gregoire Parant
f9992876df Update PWA apple icon 2021-08-04 15:05:11 +02:00
grégoire parant
588af2e3cc
Merge pull request #1333 from thecodingmachine/ImproveWA
Force to add service worker js file
2021-08-04 14:32:17 +02:00
Gregoire Parant
383bbbdafe Force to add service worker js file 2021-08-04 14:31:12 +02:00
grégoire parant
3df5eece38
Merge pull request #1331 from thecodingmachine/UpdatePWA
Update PWA design
2021-08-04 13:53:13 +02:00
Gregoire Parant
707040b506 improve PWA and last room strating 2021-08-04 13:33:58 +02:00
David Négrier
82832b7055 Adding a test case for WA.ui.triggerMessage 2021-08-03 22:37:49 +02:00
David Négrier
4713010929 Merge branch 'develop' of github.com:thecodingmachine/workadventure into trigger-message-refv3 2021-08-03 19:01:16 +02:00
Gregoire Parant
1ad9f5b045 Add new icon manifest 2021-08-03 17:49:25 +02:00
Gregoire Parant
d781b2eb91 Update favicon and service worker html 2021-08-03 17:28:27 +02:00
GRL
fe585297fc Merge branch 'develop' of github.com:thecodingmachine/workadventure into MenuSvelte 2021-08-03 17:19:47 +02:00
GRL
2d8098b06d Merge branch 'develop' of github.com:thecodingmachine/workadventure into layoutManagerSvelte 2021-08-03 11:40:51 +02:00
GRL
1436b15328 Migrate layoutManager in Svelte 2021-08-03 11:13:08 +02:00
David Négrier
4293ea320d Hotfix: if an error occurs while loading the map (because the map is not accessible from the WorkAdventure servers), the application does not prevent users from connecting. 2021-08-03 10:08:53 +02:00
grégoire parant
d568fd596b
Merge pull request #1329 from thecodingmachine/develop
Add feature Release 1.4.11
2021-08-03 00:47:09 +02:00
Gregoire Parant
952e58ecc1 Fix ban message style 2021-08-03 00:34:07 +02:00
grégoire parant
71e3b9dfc1
Merge pull request #1308 from thecodingmachine/GlobalMessageToWorld
Send a message to all the room of a world from Console Admin
2021-08-02 23:50:54 +02:00
Gregoire Parant
14b4229019 Merge branch 'develop' into GlobalMessageToWorld
# Conflicts:
#	CHANGELOG.md
#	front/src/Api/Events/IframeEvent.ts
#	front/src/Components/App.svelte
#	pusher/src/Services/SocketManager.ts
2021-08-02 23:07:39 +02:00
grégoire parant
35f0c945fd
Merge pull request #1328 from thecodingmachine/develop
BugFix Release 1.4.11
2021-08-02 22:46:32 +02:00
Gregoire Parant
2480d13f58 Merge branch 'master' into develop 2021-08-02 22:26:34 +02:00
Gregoire Parant
e07f4bf96f Add comment 2021-08-02 22:24:00 +02:00
grégoire parant
fbe7440e24
Merge pull request #1320 from thecodingmachine/loadTileset
Load a json file that describe a tileset in Tile format.
2021-08-02 22:19:49 +02:00
Gregoire Parant
f2d382681b Merge branch 'develop' into loadTileset
# Conflicts:
#	CHANGELOG.md
#	front/src/Phaser/Game/GameScene.ts
2021-08-02 22:16:05 +02:00
Gregoire Parant
e60c69b394 Squashed commit of the following:
commit 3ab069d650
Merge: 2b748138 9d4ffe54
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:51:07 2021 +0200

    Merge pull request #1323 from thecodingmachine/openIDPoc

    FIX: bomp the node version of pusher

commit 9d4ffe542c
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 15:50:30 2021 +0200

    FIX: bomp the node version of pusher

commit 2b7481383f
Merge: 74975ac9 9c803a69
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:48:56 2021 +0200

    Merge pull request #1251 from thecodingmachine/openIDPoc

    POC for the openID connect

commit 9c803a69ff
Author: kharhamel <oognic@gmail.com>
Date:   Tue Jul 27 16:37:01 2021 +0200

    FEATURE: users can now login via an openID client

commit 74975ac9d8
Merge: 315fe7ca ebdcf880
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 14:54:33 2021 +0200

    Merge pull request #1322 from thecodingmachine/improveCapacityWarning

    FEATURE: improved the room capacity warning visuals

commit ebdcf8804d
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 14:08:27 2021 +0200

    added admin link to the warning container

commit 41ac51f291
Author: kharhamel <oognic@gmail.com>
Date:   Thu Jul 29 18:02:36 2021 +0200

    FEATURE: improved the room capacity warning visuals

commit 315fe7ca82
Author: David Négrier <d.negrier@thecodingmachine.com>
Date:   Thu Jul 29 17:49:51 2021 +0200

    Adding a "font-family" property for text objects. (#1311)

    - Tiled displays your system fonts.
    - Computers have different sets of fonts. Therefore, browsers never rely on system fonts
    - Which means if you select a font in Tiled, it is quite unlikely it will render properly in WorkAdventure

    To circumvent this problem, in your text object in Tiled, you can now add an additional property: `font-family`.

    The `font-family` property can contain any "web-font" that can be loaded by your browser.

    This allows us to use the "Press Start 2P" 8px font in text objects, which renders way better than the default "Sans serif" font of your browser.

commit 7ffe564e8e
Author: GRL78 <80678534+GRL78@users.noreply.github.com>
Date:   Thu Jul 29 17:42:16 2021 +0200

    Graphic upgrade of the global message console (#1287)

    * Graphic upgrade of the global message console
    Fix: error if LoginScene doesn't exist

    * Rework graphic of global message console

    * Rework graphic of global message console

    * Remove console.log

commit 2a1af2a131
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Thu Jul 29 16:42:31 2021 +0200

    PWA service workers (#1319)

    * PWA services worker

    - [x] Register service worker of PWA to install WorkAdventure application on desktop and mobile
    - [x] Create webpage specifique for PWA
    - [ ] Add register service to save and redirect on a card
    - [ ] Add possibilities to install PWA for one World (with register token if existing)

    * Finish PWA strategy to load last map visited

    * Fix feedback @Kharhamel

    * Fix feedback @Kharhamel
2021-08-02 22:14:13 +02:00
Gregoire Parant
7bd444ade9 Revert "Squashed commit of the following:"
This reverts commit c177f0a1b3.
2021-08-02 22:13:10 +02:00
Gregoire Parant
c177f0a1b3 Squashed commit of the following:
commit 41748a4036
Merge: 3b1d4d63 4991a70b
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:38:37 2021 +0200

    Merge pull request #1327 from thecodingmachine/hotFixErrorCardBack

    Fix error generated

commit 4991a70bba
Author: Gregoire Parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:34:03 2021 +0200

    Fix error generated

    Don't generate error if file is Invalid

commit 3b1d4d630c
Merge: f52b4598 02e5860e
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:03:18 2021 +0200

    Merge pull request #1326 from thecodingmachine/HotFixCreateMapFeature

    Hot fix create map feature

commit 02e5860e43
Author: Gregoire Parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 20:59:13 2021 +0200

    HotFix redirect on production domain of WorkAdventure

     - Update domain `ADMIN_URL` by `workadventu.re`

commit f52b459872
Merge: 3d657b4a 3ab069d6
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 11:23:16 2021 +0200

    Merge pull request #1324 from thecodingmachine/develop

    Release v1.4.11

commit 3ab069d650
Merge: 2b748138 9d4ffe54
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:51:07 2021 +0200

    Merge pull request #1323 from thecodingmachine/openIDPoc

    FIX: bomp the node version of pusher

commit 9d4ffe542c
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 15:50:30 2021 +0200

    FIX: bomp the node version of pusher

commit 2b7481383f
Merge: 74975ac9 9c803a69
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:48:56 2021 +0200

    Merge pull request #1251 from thecodingmachine/openIDPoc

    POC for the openID connect

commit 9c803a69ff
Author: kharhamel <oognic@gmail.com>
Date:   Tue Jul 27 16:37:01 2021 +0200

    FEATURE: users can now login via an openID client

commit 74975ac9d8
Merge: 315fe7ca ebdcf880
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 14:54:33 2021 +0200

    Merge pull request #1322 from thecodingmachine/improveCapacityWarning

    FEATURE: improved the room capacity warning visuals

commit ebdcf8804d
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 14:08:27 2021 +0200

    added admin link to the warning container

commit 41ac51f291
Author: kharhamel <oognic@gmail.com>
Date:   Thu Jul 29 18:02:36 2021 +0200

    FEATURE: improved the room capacity warning visuals

commit 315fe7ca82
Author: David Négrier <d.negrier@thecodingmachine.com>
Date:   Thu Jul 29 17:49:51 2021 +0200

    Adding a "font-family" property for text objects. (#1311)

    - Tiled displays your system fonts.
    - Computers have different sets of fonts. Therefore, browsers never rely on system fonts
    - Which means if you select a font in Tiled, it is quite unlikely it will render properly in WorkAdventure

    To circumvent this problem, in your text object in Tiled, you can now add an additional property: `font-family`.

    The `font-family` property can contain any "web-font" that can be loaded by your browser.

    This allows us to use the "Press Start 2P" 8px font in text objects, which renders way better than the default "Sans serif" font of your browser.

commit 7ffe564e8e
Author: GRL78 <80678534+GRL78@users.noreply.github.com>
Date:   Thu Jul 29 17:42:16 2021 +0200

    Graphic upgrade of the global message console (#1287)

    * Graphic upgrade of the global message console
    Fix: error if LoginScene doesn't exist

    * Rework graphic of global message console

    * Rework graphic of global message console

    * Remove console.log

commit 2a1af2a131
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Thu Jul 29 16:42:31 2021 +0200

    PWA service workers (#1319)

    * PWA services worker

    - [x] Register service worker of PWA to install WorkAdventure application on desktop and mobile
    - [x] Create webpage specifique for PWA
    - [ ] Add register service to save and redirect on a card
    - [ ] Add possibilities to install PWA for one World (with register token if existing)

    * Finish PWA strategy to load last map visited

    * Fix feedback @Kharhamel

    * Fix feedback @Kharhamel
2021-08-02 22:06:24 +02:00
grégoire parant
41748a4036
Merge pull request #1327 from thecodingmachine/hotFixErrorCardBack
Fix error generated
2021-08-02 21:38:37 +02:00
Gregoire Parant
4991a70bba Fix error generated
Don't generate error if file is Invalid
2021-08-02 21:34:03 +02:00
grégoire parant
3b1d4d630c
Merge pull request #1326 from thecodingmachine/HotFixCreateMapFeature
Hot fix create map feature
2021-08-02 21:03:18 +02:00
Gregoire Parant
02e5860e43 HotFix redirect on production domain of WorkAdventure
- Update domain `ADMIN_URL` by `workadventu.re`
2021-08-02 20:59:13 +02:00
grégoire parant
f52b459872
Merge pull request #1324 from thecodingmachine/develop
Release v1.4.11
2021-08-02 11:23:16 +02:00
Kharhamel
3ab069d650
Merge pull request #1323 from thecodingmachine/openIDPoc
FIX: bomp the node version of pusher
2021-07-30 15:51:07 +02:00
kharhamel
9d4ffe542c FIX: bomp the node version of pusher 2021-07-30 15:50:30 +02:00
Kharhamel
2b7481383f
Merge pull request #1251 from thecodingmachine/openIDPoc
POC for the openID connect
2021-07-30 15:48:56 +02:00
kharhamel
9c803a69ff FEATURE: users can now login via an openID client 2021-07-30 15:43:46 +02:00
Kharhamel
74975ac9d8
Merge pull request #1322 from thecodingmachine/improveCapacityWarning
FEATURE: improved the room capacity warning visuals
2021-07-30 14:54:33 +02:00
kharhamel
ebdcf8804d added admin link to the warning container 2021-07-30 14:50:11 +02:00
GRL
bd96a32d5b Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-30 09:38:28 +02:00
kharhamel
41ac51f291 FEATURE: improved the room capacity warning visuals 2021-07-29 18:27:53 +02:00
GRL
6ac25d344b Use const 2021-07-29 17:56:28 +02:00
David Négrier
315fe7ca82
Adding a "font-family" property for text objects. (#1311)
- Tiled displays your system fonts.
- Computers have different sets of fonts. Therefore, browsers never rely on system fonts
- Which means if you select a font in Tiled, it is quite unlikely it will render properly in WorkAdventure

To circumvent this problem, in your text object in Tiled, you can now add an additional property: `font-family`.

The `font-family` property can contain any "web-font" that can be loaded by your browser.

This allows us to use the "Press Start 2P" 8px font in text objects, which renders way better than the default "Sans serif" font of your browser.
2021-07-29 17:49:51 +02:00
GRL78
7ffe564e8e
Graphic upgrade of the global message console (#1287)
* Graphic upgrade of the global message console
Fix: error if LoginScene doesn't exist

* Rework graphic of global message console

* Rework graphic of global message console

* Remove console.log
2021-07-29 17:42:16 +02:00
GRL
6c616f73eb Add CHANGELOG 2021-07-29 17:41:31 +02:00
grégoire parant
2a1af2a131
PWA service workers (#1319)
* PWA services worker

- [x] Register service worker of PWA to install WorkAdventure application on desktop and mobile
- [x] Create webpage specifique for PWA
- [ ] Add register service to save and redirect on a card
- [ ] Add possibilities to install PWA for one World (with register token if existing)

* Finish PWA strategy to load last map visited

* Fix feedback @Kharhamel

* Fix feedback @Kharhamel
2021-07-29 16:42:31 +02:00
GRL
880b2d4b71 Add CHANGELOG 2021-07-29 15:56:28 +02:00
GRL
eb8404ac91 Initialise iframeListener in preload
Add documentation and CHANGELOG
2021-07-29 15:53:27 +02:00
GRL
5f7361156b Merge branch 'develop' of github.com:thecodingmachine/workadventure into loadTileset 2021-07-29 15:35:32 +02:00
GRL
897a01bb79 Loading a tileset create a new GameMap 2021-07-29 14:14:40 +02:00
GRL
73d589ad11 Load a json file that describe a tileset in Tile format.
Then add it to the tilemap of the GameScene
Then add if to the GameMap
2021-07-28 18:03:19 +02:00
Gregoire Parant
4b4356e7ff Merge branch 'master' into develop 2021-07-28 12:37:14 +02:00
grégoire parant
3d657b4a18
HotFix ban user (#1318)
* HotFix ban user

 - Fix to permit to ban user with more sub tab openned
 - Fix to permit to send message ban to the user with more sub tab oppened

* Fix CI

* Run pretty
2021-07-27 14:42:32 +02:00
Stefan Weil
64065b2798
Fix some typos (found by codespell) (#1316)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2021-07-27 14:29:09 +02:00
GRL78
95af568653
Link will now be white and underline + Click on the game to lose focus of input field (#1315)
* Link will now be white and underline
Click on the game to lose focus of input field

* Use bind:this instead of querySelector
Add isClickedInside and isClickedOutside to HtmlUtils to know if the user click inside/outside an element targeted
2021-07-27 14:28:35 +02:00
grégoire parant
fc9865e273
HotFix position WOKA (#1317)
- Fix the moving position when a user enters in "custom your own" with custom WOKA loaded from admin
2021-07-27 14:28:00 +02:00
David Négrier
cdd61bdb2c Merging with develop 2021-07-23 16:41:38 +02:00
GRL
9e8bed7aab Position of quill tooltip
Use inlineStyle to indent and align text correctly
2021-07-23 16:17:53 +02:00
David Négrier
3d5c222957 Reverting changes regarding single quotes 2021-07-23 14:59:56 +02:00
David Négrier
a146065cc6 Reverting changes regarding single quotes 2021-07-23 14:55:14 +02:00
GRL
ba6e6235d6 Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-23 14:10:43 +02:00
David Négrier
5a56c20221
Merge pull request #1310 from thecodingmachine/fix_persist_property
Taking into account persist property
2021-07-23 12:27:08 +02:00
David Négrier
c1cd464a7b Fixing reference to deprecated method in doc 2021-07-23 12:26:18 +02:00
David Négrier
88f2bfdf39 Taking into account persist property
The "persist" property was not taken into account and all variables were stored in DB. This change makes sure only variables tagged with "persist" are actually persisted.
2021-07-23 12:19:47 +02:00
David Négrier
72a9f901ab
Merge pull request #1309 from thecodingmachine/fix_variable_loops
Fixing loop when setting variables
2021-07-23 11:57:06 +02:00
David Négrier
2aba6b1c27 Fixing loop when setting variables
Setting a variable would makes the application enter in an infinite loop of events (between all the scripts and the back)
This fix makes sure a variable does not emit any event if it is changed to a value it already has.
2021-07-23 11:51:01 +02:00
GRL
807abaa2c0 Text global message use delta instead of text 2021-07-23 11:07:17 +02:00
GRL
a0aeb3b1f8 Merge remote-tracking branch 'origin/GlobalMessageToWorld' into GlobalMessageToWorld 2021-07-22 17:29:16 +02:00
GRL
9fa7c7aac0 Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-22 17:29:00 +02:00
GRL
a01bd73e93 Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-22 17:17:25 +02:00
David Négrier
84df25f863 Improving WA.state typings 2021-07-22 17:14:36 +02:00
David Négrier
756a495ac6 Fixing CI 2021-07-22 17:14:15 +02:00
GRL
68ff1b9e17 Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-22 16:26:01 +02:00
GRL
9e16bfc366 playGlobalMessage are receive as adminRoomMessage
Suppression of GlobalMessageManager and TypeMessage
Migrating message to svelte
2021-07-22 16:14:27 +02:00
David Négrier
9b2914cc63
Merge pull request #1239 from thecodingmachine/scripting_api_room_metadata
Allowing loading/saving "metadata" from a room
2021-07-22 11:28:12 +02:00
David Négrier
31811ab906 Improve docblock 2021-07-22 11:24:30 +02:00
David Négrier
ae5617f3a0 Simplifying promises 2021-07-22 10:41:45 +02:00
David Négrier
6d4c2cfd39 Simplifying error handling 2021-07-22 10:33:07 +02:00
Lurkars
c0b09db05e change port back 2021-07-21 19:29:45 +02:00
Lurkars
fb2bd1c346 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-07-21 19:28:00 +02:00
Lurkars
285f1ebe89 Merge branch 'develop' of github.com:thecodingmachine/workadventure into audioPlayerImprovements 2021-07-21 19:26:29 +02:00
David Négrier
ddabda1c4b Adding error case in test 2021-07-21 18:49:25 +02:00
David Négrier
1435ec89c9 Adding unit test and fixing an issue with DNS solving 2021-07-21 18:42:20 +02:00
David Négrier
1bb6d893e0 Simplifying promises 2021-07-21 18:23:03 +02:00
David Négrier
3cfb74be54 Removing useless console log 2021-07-21 16:55:34 +02:00
David Négrier
8790a9c680
Merge pull request #1303 from ValdoTR/develop
Fix openPopup deprecated annotation
2021-07-21 16:43:03 +02:00
David Négrier
080d495044 Renaming WA.room.getMap to WA.room.getTiledMap 2021-07-21 16:40:53 +02:00
David Négrier
181545e6b7 Removing dead code 2021-07-21 16:33:56 +02:00
David Négrier
aa19e8a7cd Adding a warning when editing a map locally. 2021-07-21 16:29:38 +02:00
Valdo Romao
cd49fd5b83 Fixe openPopup deprecated annotation 2021-07-21 16:10:30 +02:00
David Négrier
f435cecfdc Merge branch 'develop' of github.com:thecodingmachine/workadventure into scripting_api_room_metadata 2021-07-21 15:37:53 +02:00
Lurkars
7285122fed fix port 2021-07-21 12:00:15 +02:00
Lurkars
9d518eded8 Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenu 2021-07-21 11:56:36 +02:00
Lurkars
d43202d90d fix userInput 2021-07-21 10:17:46 +02:00
Lurkars
f43deff626 use emote button 2021-07-21 09:41:22 +02:00
GRL78
4f513fb1e0
Fix test Scripting API (#1298)
* fix tests of Scripting API

* Suppression ts-ignore
2021-07-20 19:54:45 +02:00
David Négrier
78524e64bd
Merge pull request #1300 from thecodingmachine/remove_search_args_from_room_url
Removing the 'search' parameters from the room URL sent to pusher
2021-07-20 18:42:18 +02:00
David Négrier
2d55f982d3 Removing the 'search' parameters from the room URL sent to pusher 2021-07-20 18:29:41 +02:00
grégoire parant
b336e3b08a
Delete logo TCM on Error scene (#1297) 2021-07-20 16:45:24 +02:00
Lurkars
83bd19c8dc Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenu 2021-07-20 16:27:49 +02:00
GRL
6e65952d75 SendGlobalMessage by sendAminMessage 2021-07-20 15:16:51 +02:00
GRL78
936f5d0301
Icon chat not italic or bold (#1296) 2021-07-20 10:28:40 +02:00
David Négrier
fe59b4512b Fixing CI 2021-07-20 09:33:01 +02:00
David Négrier
bfd9ae324b Adding documentation about onVariableChange 2021-07-20 09:19:44 +02:00
David Négrier
ac3d1240ae Setting a variable to undefined now removes it from server-side storage. 2021-07-19 18:46:33 +02:00
Kharhamel
4dcd8cfb18
Merge pull request #1295 from thecodingmachine/develop
v1.4.8
2021-07-19 17:10:00 +02:00
GRL78
697f316780
In SelectCharacterScene, if custom character not loaded then select the first character (#1284) 2021-07-19 17:06:36 +02:00
GRL78
9432c82386
Change address mail to contact us (#1282) 2021-07-19 17:05:23 +02:00
David Négrier
d955ddfe82 Adding support to persist variables in Redis 2021-07-19 16:23:16 +02:00
David Négrier
18e4d2ba4e Setting a timeout to map loading 2021-07-19 10:32:31 +02:00
David Négrier
dbd5b80636 Adding support for "readableBy" and "writableBy" in back
This means that we are now loading maps from server side.
2021-07-19 10:16:43 +02:00
GRL
0d3c697add Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld 2021-07-19 10:01:13 +02:00
GRL
71bf6b362b Rework graphic of global message console 2021-07-19 09:38:49 +02:00
GRL
214226a271 Rework graphic of global message console 2021-07-19 09:22:47 +02:00
Kharhamel
d8176c2f8d
Merge pull request #1291 from thecodingmachine/chatTweak
FEATURE: chat tweak
2021-07-16 15:49:36 +02:00
kharhamel
f840034d9c FEATURE: chat tweak 2021-07-16 14:25:59 +02:00
David Négrier
3d76f76d3e Fixing merge 2021-07-16 11:37:44 +02:00
David Négrier
5c7ea7b258 Merge branch 'develop' of github.com:thecodingmachine/workadventure into scripting_api_room_metadata 2021-07-16 11:22:36 +02:00
David Négrier
66e340dece
Merge pull request #1292 from thecodingmachine/mapDetailsByRoomId
Admin /api/map endpoint return type is now generated with generic type guards
2021-07-16 10:53:27 +02:00
David Négrier
a4a123c331 Admin /api/map endpoint return type is now generated with generic type guards 2021-07-16 10:46:45 +02:00
David Négrier
510477b99b
Merge pull request #1285 from thecodingmachine/mapDetailsByRoomId
Migrating away from the notion of public/private URL in WorkAdventure Github repository
2021-07-16 09:07:43 +02:00
David Négrier
84948eb9da
Merge pull request #1290 from thecodingmachine/develop
Deploy 2021-07-15
2021-07-15 18:36:14 +02:00
Kharhamel
c30c6b7fbd
Merge pull request #1289 from thecodingmachine/removeIncorrectDoc
FIX: removed incorrect documentation
2021-07-15 18:27:13 +02:00
kharhamel
c5587600ba FIX: removed incorrect documentation 2021-07-15 18:23:40 +02:00
David Négrier
d0d191fc28 Removing useless ternary 2021-07-15 17:12:54 +02:00
David Négrier
f217fc8aad Removing dead code 2021-07-15 17:11:48 +02:00
David Négrier
c9fa9b9a92 Migrating away from the notion of public/private URL in WorkAdventure Github repository
The notion of public/private repositories (with /_/ and /@/ URLs) is specific to the SAAS version of WorkAdventure.
It would be better to avoid leaking the organization/world/room structure of the private SAAS URLs inside the WorkAdventure Github project.

Rather than sending http://admin_host/api/map?organizationSlug=...&worldSlug=...&roomSlug=...., we are now sending /api/map&playUri=...
where playUri is the full URL of the current game.
This allows the backend to act as a complete router.
The front (and the pusher) will be able to completely ignore the specifics of URL building (with /@/ and /_/ URLs, etc...)
Those details will live only in the admin server, which is way cleaner (and way more powerful).
2021-07-15 17:07:47 +02:00
Kharhamel
f2ca7b2b16
Merge pull request #1288 from thecodingmachine/fixVideoBox
FIX: VideoPeer destroy could be called twice
2021-07-15 16:46:21 +02:00
kharhamel
285079cae2 FIX: VideoPeer destroy could be called twice 2021-07-15 16:31:43 +02:00
Kharhamel
d147661944
Merge pull request #1286 from thecodingmachine/fixVideoBox
FIX: media box height, chat font, updated simple-peer
2021-07-15 16:15:20 +02:00
kharhamel
18a65651f3 FIX: media box should always have a height 2021-07-15 16:08:37 +02:00
GRL
e43ea3aa5e Graphic upgrade of the global message console
Fix: error if LoginScene doesn't exist
2021-07-15 15:09:35 +02:00
Kharhamel
5f43aeba85
Merge pull request #1283 from thecodingmachine/fixVisitChatInteraction
FIX: visit card is now an absolute position
2021-07-13 17:20:29 +02:00
Kharhamel
091f3aa7ee
Merge pull request #1202 from thecodingmachine/betterNotifications
improved the notifications
2021-07-13 17:19:12 +02:00
kharhamel
e96cb6930b FIX: visit card is now an absolute position 2021-07-13 17:14:40 +02:00
kharhamel
3983d0c5bc FEATURE: improved the notification system 2021-07-13 16:54:11 +02:00
GRL78
b2ea368097
Migrate getCurrentUser() to WA.player (#1279) 2021-07-13 15:13:14 +02:00
kharhamel
1ce801cced temp 2021-07-13 14:40:35 +02:00
kharhamel
50f3af81e4 temp 2021-07-13 14:40:35 +02:00
kharhamel
fecbc8a018 WIP: svelte menu 2021-07-13 14:40:35 +02:00
Kharhamel
41a1f56bd5
Merge pull request #1111 from thecodingmachine/svelteChat
FEATURE: migrated the chat window to svelte
2021-07-13 11:25:38 +02:00
GRL
01bfbc36b5 Merge branch 'svelteChat' of github.com:thecodingmachine/workadventure into svelteChat 2021-07-13 11:09:32 +02:00
GRL
f7127bfb5a Graphic upgrade 2 2021-07-13 11:05:34 +02:00
GRL
a093298993 Graphic upgrade 2 2021-07-13 11:00:32 +02:00
grégoire parant
a583a9dc2a
Merge pull request #1278 from thecodingmachine/develop
Deploy 2021-07-12
2021-07-12 20:33:01 +02:00
David Négrier
28effd8ad4 Using proxy variables in test 2021-07-12 16:43:40 +02:00
GRL
e2e94c11ff Autoscroll 2021-07-12 15:00:28 +02:00
grégoire parant
022d1fec63
ServiceWorker (#1243)
- Create service worker to have PWA
 - Add install service worker
 - Add fecth service worker with a persistent cache navigator
 - Add favicon 512x512
2021-07-12 13:17:45 +02:00
GRL
b9a2433283 Upgrade graphic of the chat 2021-07-12 11:59:05 +02:00
David Négrier
52fd9067b8 Editing do to add "state" API doc 2021-07-08 11:46:30 +02:00
David Négrier
b1cb12861f Migrating variables functions to the "state" namespace. 2021-07-07 22:14:59 +02:00
kharhamel
3cfbcc6b02 FEATURE: migrated the chat window to svelte 2021-07-07 18:07:58 +02:00
David Négrier
e65e8b2097 First version with variables that actually work 2021-07-07 17:17:28 +02:00
David Négrier
ae9af56661
Merge pull request #1264 from thecodingmachine/UpdateShowHideLayer
Show/Hide Layer now unset collision and can show/hide all the layer in a group layer
2021-07-07 17:15:41 +02:00
David Négrier
cb5bdb5fea
Fixing typo 2021-07-07 17:15:22 +02:00
David Négrier
e6f609d3be
Merge pull request #1265 from thecodingmachine/UpdateSetTiles
SetTiles can now set a tile to null so that there is no more tile.
2021-07-07 17:14:03 +02:00
GRL
64c569c42f Add documentation and CHANGELOG
Modify error message
2021-07-07 17:06:23 +02:00
GRL
41c60579a6 Merge branch 'develop' of github.com:thecodingmachine/workadventure into UpdateSetTiles 2021-07-07 17:00:10 +02:00
GRL
e50292a2ba Add documentation
No second parameter
2021-07-07 16:58:54 +02:00
David Négrier
0a1c01fb26
Merge pull request #1266 from thecodingmachine/UpdateSetPropertyLayer
SetProperty delete a property where tha value is undefined and load the map of exitUrl property
2021-07-07 16:44:32 +02:00
grégoire parant
17525e1e15
Return at the new line into the Pop-up (#1267)
Add regex to replace "\r\n" or "\r" or "\n" by <br/>
2021-07-07 16:42:26 +02:00
GRL
6f6ad949ca Merge branch 'develop' of github.com:thecodingmachine/workadventure into UpdateShowHideLayer 2021-07-07 16:34:36 +02:00
GRL
24811e0a31 SetProperty delete a property where tha value is undefined and load the map of exitUrl property 2021-07-07 14:59:40 +02:00
GRL
bef5e139c0 SetTiles can now set a tile to null so that there is no more tile. 2021-07-07 14:42:17 +02:00
GRL
d51ac45079 Show/Hide Layer now unset collision and can show/hide all the layer in a group layer 2021-07-07 14:26:53 +02:00
David Négrier
5116b82e77 Merge branch 'develop' of github.com:thecodingmachine/workadventure into scripting_api_room_metadata 2021-07-07 11:55:00 +02:00
David Négrier
e5f7c62e25
Merge pull request #1263 from thecodingmachine/blacklistOnUuid
Users blocking now rely on UUID rather than ID
2021-07-07 11:33:12 +02:00
David Négrier
34cb0ebf39 Users blocking now rely on UUID rather than ID
This way, if a user A blocks another user B, if user B refreshes the browser or leaves and re-enters the room, user B will still be blocked.
As a side effect, this allows us to completely remove the "sockets" property in the SocketManager on the Pusher.
2021-07-07 11:24:51 +02:00
David Négrier
19bd1045e1 Merge branch 'develop' of github.com:thecodingmachine/workadventure into scripting_api_room_metadata 2021-07-06 17:24:16 +02:00
David Négrier
28e4f59e50
Merge pull request #1262 from thecodingmachine/players_store
Adding a playersStore
2021-07-06 17:21:42 +02:00
David Négrier
46e6917df6 Adding a playersStore
The playerStore can be useful to get the details of a given player from its ID.
2021-07-06 17:13:08 +02:00
David Négrier
a1f1927b6d Starting adding variables server-side 2021-07-06 15:30:49 +02:00
David Négrier
cb78ff333b Adding client side check of setVariable with writableBy property 2021-07-06 10:58:12 +02:00
David Négrier
86fa869b20 Actually using Type Guards in queries received by WA. 2021-07-06 10:26:44 +02:00
David Négrier
0aa93543bc Adding warning if "template" object is used as a variable 2021-07-05 18:48:26 +02:00
David Négrier
bf17ad4567 Switching setVariable to a query and fixing error hangling in query mechanism 2021-07-05 18:29:34 +02:00
David Négrier
c30de8c6db Adding support for default variables values 2021-07-05 17:25:23 +02:00
jonny
4ea6a12d20 cast callback 2021-07-05 16:26:29 +02:00
David Négrier
194d6a6414
Merge pull request #1254 from jonnytest1/server-crash
fixed invalid unauathorized handler
2021-07-05 14:42:20 +02:00
David Négrier
abd53b6251 Adding WA.onInit method to wait for API startup. 2021-07-05 14:41:10 +02:00
David Négrier
62a4814961 Migrating WA.player.getCurrentUser and WA.room.getCurrentRoom to direct property access and WA.room.getMap 2021-07-05 11:53:33 +02:00
jonny
9bcdc9ba33 linter fixes 2021-07-02 19:05:03 +02:00
jonny
310e131a6e eslint restart 2021-07-02 19:03:34 +02:00
jonny
369d453455 Merge remote-tracking branch 'remotes/upstream/develop' into trigger-message-refv3 2021-07-02 18:49:22 +02:00
David Négrier
ea1460abaf Adding variables (on the front side for now) 2021-07-02 17:36:43 +02:00
David Négrier
1806ef9d7e First version of the room metadata doc 2021-07-02 17:30:42 +02:00
David Négrier
a7ced533c0
Merge pull request #1258 from thecodingmachine/query-answer-mechanism
Add new "query/answer" utility functions for the scripting API
2021-07-02 17:29:41 +02:00
David Négrier
280c59e6b5 Changing callback signature of registerAnswerer so that it can return a value and not necessarily a promise. 2021-07-02 17:26:28 +02:00
David Négrier
5b4a72ea1f Add new "query/answer" utility functions for the scripting API
So far, the scripting API was using events to communicate between WA and the iFrame.
But often, the scripting API might actually want to "ask" WA a question and wait for an answer.

We dealt with this by using 2 unrelated events (in a mostly painful way).

This commit adds a "queryWorkadventure" utility function in the iFrame API that allows us
to send a query, and to wait for an answer. The query and answer events have a unique ID to be
sure the answer matches the correct query.

On the WA side, a new `IframeListener.registerAnswerer` method can be used to register a possible answer.
2021-07-02 16:49:22 +02:00
David Négrier
d29c0cc99f
Merge pull request #1257 from thecodingmachine/jonnytest1-tiles-start-positions
Merging Jonnytest1's PR tiles-start-positions + Correction of metadata function
2021-07-02 15:12:23 +02:00
GRL
8644389d7e remove unnecessary conversion type 2021-07-02 14:45:27 +02:00
GRL
c5b5326480 setProperty function doesn't set an empty array if property doesn't exist 2021-07-02 14:40:18 +02:00
GRL
e1611969ce Merge branch 'develop' of github.com:thecodingmachine/workadventure into jonnytest1-tiles-start-positions 2021-07-02 14:35:28 +02:00
jonny
65cefb3584 fixed invalid unauathorized handler 2021-07-01 15:50:40 +02:00
Lurkars
bba26fdc20 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-07-01 13:39:04 +02:00
David Négrier
63391e657f
Merge pull request #1221 from thecodingmachine/metadataScriptAPIV2
Change Tile with scripting API
2021-07-01 12:04:16 +02:00
GRL
01d02124d1 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-07-01 11:38:33 +02:00
David Négrier
a7d2c600ff Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-06-30 13:35:29 +02:00
David Négrier
50fcc1caaa Fixing signature of openCoWebSite 2021-06-30 10:40:53 +02:00
David Négrier
164f88ef4c
Merge pull request #1250 from thecodingmachine/fix_push_to_npm
Fixing NPM package generation
2021-06-30 10:21:04 +02:00
David Négrier
bfcdd31ed2 Fixing NPM package generation
The generation was broken due to the refactoring in several classes (some of them where not properly exported).
Also, trying to generate the NPM package on every build now (to detect issues).
2021-06-30 10:15:55 +02:00
David Négrier
cb2485bab0
Merge pull request #1248 from thecodingmachine/master_backport
Backporting master into develop
2021-06-29 18:50:54 +02:00
David Négrier
8f3d9277ac Merging master into develop 2021-06-29 18:39:43 +02:00
David Négrier
33ee190b0f
Merge pull request #1246 from thecodingmachine/OpenWebSiteScriptAllowAPI
Cowebsite opened by script can use Iframe Api
2021-06-29 18:27:54 +02:00
David Négrier
3c77ce945d
Improving docs 2021-06-29 18:26:21 +02:00
David Négrier
c5949a0337 Fixing linting 2021-06-29 17:57:19 +02:00
David Négrier
ef0d422a49 Fixing building of typings 2021-06-29 17:55:19 +02:00
David Négrier
285712bfc7 Fixing building of typings 2021-06-29 17:31:01 +02:00
David Négrier
1cd18db560 Fixing broken NPM typings package build 2021-06-29 16:59:54 +02:00
GRL
95bd639124 More statement 2021-06-29 16:50:33 +02:00
David Négrier
3afc725af6
Merge pull request #1245 from thecodingmachine/cowebsiteAllowApibyScript
Allow a website opened by script to use iframe_api
2021-06-29 16:10:22 +02:00
GRL
6462773e7f Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-29 14:16:19 +02:00
GRL
b457ce493b Suppress console.log 2021-06-29 09:44:57 +02:00
GRL
dad8cdef8b Merge branch 'develop' of github.com:thecodingmachine/workadventure into OpenWebSiteScriptAllowAPI 2021-06-29 09:42:20 +02:00
GRL
65d1e4e768 Add CHANGELOG and a map for test 2021-06-29 09:40:15 +02:00
David Négrier
ec75509725
Merge pull request #839 from ValdoTR/new-favicon
Updated favicons
2021-06-29 09:03:15 +02:00
Lurkars
445449d2db remove port change for sync 2021-06-29 08:40:24 +02:00
Lurkars
81f2c8b746 Merge branch 'develop' of github.com:thecodingmachine/workadventure into twemojiEmoteMenu 2021-06-29 08:37:08 +02:00
Lurkars
c264364752 Twemoji Emote Menu 2021-06-29 08:37:01 +02:00
Valdo Romao
723001e1e7 Added better favicon 2021-06-29 00:12:00 +01:00
GRL
389ca25b6a Cowebsite opened by script can use Iframe Api 2021-06-28 18:00:48 +02:00
Valdo Romao
4cf5a6f7a0 Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into new-favicon 2021-06-28 15:56:28 +01:00
GRL
5c3a207c72 Merge branch 'cowebsiteAllowApibyScript' of github.com:thecodingmachine/workadventure into cowebsiteAllowApibyScript 2021-06-28 16:13:53 +02:00
GRL
06920a2271 Use dynamic Iframe API 2021-06-28 16:13:38 +02:00
GRL78
9ab73c0aa0
Update docs/maps/api-reference.md
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-06-28 16:05:29 +02:00
GRL
feab5da2ad Allow a website opened by script to use iframe_api 2021-06-28 15:55:30 +02:00
David Négrier
49d627ca38
Merge pull request #1244 from thecodingmachine/warning_message_on_iframe_api
Adding a warning message if an unauthorized iFrame tries to communicate with WA
2021-06-28 15:24:55 +02:00
David Négrier
3fd4f9d384 Adding a warning message if an unauthorized iFrame tries to communicate with WA
Closes #1241
2021-06-28 15:20:27 +02:00
David Négrier
1e57028e6e Renaming changeTile to setTiles 2021-06-28 14:58:49 +02:00
David Négrier
319db95bc8 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2
# Conflicts:
#	front/src/Api/iframe/room.ts
2021-06-28 14:50:26 +02:00
David Négrier
0c5774a48f
Merge pull request #1229 from jonnytest1/cache-fix
immutableData was never assigned
2021-06-28 14:18:45 +02:00
David Négrier
71a5e29ae4 Making script URL dynamic
Signed-off-by: David Négrier <d.negrier@thecodingmachine.com>
2021-06-28 14:13:49 +02:00
David Négrier
86cb118378 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-28 14:12:10 +02:00
David Négrier
46ae4fda74
Merge pull request #1242 from thecodingmachine/iframe_load_url
Trying to find iframe_api.js URL script dynamically
2021-06-28 14:10:32 +02:00
David Négrier
303d2a7837 Adding a warning regarding the "controlled" XSS in iframe.html 2021-06-28 13:55:17 +02:00
David Négrier
7f79c2dc4a Making the test page URL dynamic depending on the environment 2021-06-28 13:54:49 +02:00
GRL
d38cec0b51 Merge branch 'metadataScriptAPIV2' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-28 13:48:44 +02:00
GRL
651b0a4518 Add test map for changing tiles by script in index 2021-06-28 12:03:06 +02:00
GRL
ed84dacb9c Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-28 12:01:08 +02:00
David Négrier
330a795fee Trying to find iframe_api.js URL script dynamically
This would allow us to have tests that don't rely on the iframe_api.js from prod, and would allow scripts that target the correct iframe API, no matter if they are running on workadventu.re or on self-hosted maps.
2021-06-28 11:51:13 +02:00
jonny
917f3728d5 added callback in example 2021-06-28 11:17:22 +02:00
jonny
9643c7adf9 added callback documentation 2021-06-28 11:16:29 +02:00
David Négrier
f18291e9d2 Referencing test in index.html and adding some text in the test map. 2021-06-28 10:06:56 +02:00
David Négrier
0b161a2368
Fixing typos 2021-06-28 09:56:18 +02:00
GRL
b182a08ca2 correction from review 2021-06-28 09:33:13 +02:00
jonny
b0eb241fc3 oO something kept movin the comment to the next line 2021-06-25 18:45:15 +02:00
jonny
bbdf0a1289 fixed merge conflict 2021-06-25 18:20:16 +02:00
jonny
7f61e9addd Merge remote-tracking branch 'remotes/upstream/develop' into tiles-start-positions 2021-06-25 18:14:40 +02:00
jonny
abfa010bbf added husky to gitignore 2021-06-25 18:07:03 +02:00
jonny
769e0fcc29 refactor to position object 2021-06-25 18:03:43 +02:00
jonny
c7fa5cab8b cleanup 2021-06-25 17:57:09 +02:00
jonny
f536d538ea added backwards compatible check and maps 2021-06-25 17:35:42 +02:00
Lurkars
7d12d8561a Merge branch 'develop' of github.com:thecodingmachine/workadventure into audioPlayerImprovements 2021-06-25 16:13:26 +02:00
Lurkars
4c8ee41cf2 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-06-24 18:28:12 +02:00
David Négrier
63d4c99d15
Merge pull request #1235 from thecodingmachine/fix_map_change
Fixing a lock when the player is moving from one room to the other
2021-06-24 17:08:06 +02:00
David Négrier
ac97cf5772 Fixing a lock when the player is moving from one room to the other
This was due to a store not properly unsubscribed when changing rooms.
2021-06-24 17:02:57 +02:00
Lurkars
d28f0bed50 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-06-24 15:43:06 +02:00
David Négrier
8c8649b584
Merge pull request #1232 from thecodingmachine/fixCollides
Fix collides
2021-06-24 15:19:10 +02:00
Kharhamel
66bceb577a
Merge pull request #1233 from thecodingmachine/fixMenuCrash
FIX: solved a menu crash
2021-06-24 13:51:58 +02:00
Guy Sheffer
120f19af65
Add anthoer note for https://github.com/thecodingmachine/workadventure/issues/932#issuecomment-867562208 2021-06-24 14:35:18 +03:00
Lurkars
116c56be81 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-06-24 13:04:28 +02:00
kharhamel
a094e16c1f FIX: solved a menu crash 2021-06-24 12:14:28 +02:00
GRL
dcc7f2a686 Fix collides 2021-06-24 12:10:44 +02:00
GRL
c79603d7fa Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-24 11:55:07 +02:00
David Négrier
2f282e3469 peerStore loading order caused issues. Fixed in GameScene (+ extracted a few stores in their files) 2021-06-24 11:54:09 +02:00
GRL
4903911d62 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-24 11:33:29 +02:00
GRL
a666bf310b Change Tiles 2021-06-24 11:31:29 +02:00
David Négrier
6ed8ce9af1
Merge pull request #1163 from thecodingmachine/svelte_video_overlay
Migrating the video overlay in Svelte
2021-06-24 10:53:35 +02:00
David Négrier
e4708149e0 Merge branch 'develop' of github.com:thecodingmachine/workadventure into svelte_video_overlay
# Conflicts:
#	front/package.json
#	front/src/Components/App.svelte
#	front/src/Phaser/Game/GameScene.ts
#	front/src/Phaser/Menu/MenuScene.ts
#	front/src/WebRtc/MediaManager.ts
2021-06-24 10:49:55 +02:00
David Négrier
8d59680de5 Removing useless code 2021-06-24 10:36:47 +02:00
David Négrier
5ed61012f0 Created a PeerStatus type instead of "connecting" | "connected" | "error" | "closed" 2021-06-24 10:34:36 +02:00
David Négrier
52a90e52d4
Merge pull request #1226 from thecodingmachine/apply_prettier_on_push_and_back
Applying prettier in CI for pusher and back containers
2021-06-24 10:29:21 +02:00
David Négrier
3e464580ea Fixing eslint ignore broken by Prettier 2021-06-24 10:23:32 +02:00
David Négrier
10c3d6dee2 Applying Prettier on pusher and back 2021-06-24 10:09:10 +02:00
Lurkars
a0418ddb78 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-06-24 09:19:55 +02:00
jonny
d1178b1a01 immutableData was never assigned 2021-06-23 20:19:38 +02:00
jonny
5472d220ba added trigger message code 2021-06-23 17:32:32 +02:00
David Négrier
06b7f5ba2f Applying prettier in CI for pusher and back containers 2021-06-23 17:13:16 +02:00
David Négrier
3cf0a9ee84
Merge pull request #1225 from thecodingmachine/apply_prettier_on_pusher_and_back
Setting up prettier on pusher and back
2021-06-23 17:12:16 +02:00
David Négrier
0828dd8af3 Making max line length to 120 2021-06-23 16:58:57 +02:00
David Négrier
3f0ef2d31a Fixing prettier run command 2021-06-23 16:56:33 +02:00
David Négrier
f6d3783f6c Removing git add from lint-staged since it is not necessary since v10 2021-06-23 16:50:00 +02:00
David Négrier
3eab074e2a Setting up lint-staged on front and back 2021-06-23 16:45:38 +02:00
David Négrier
ecbadda65a
Merge pull request #1224 from thecodingmachine/prettier
Setting up prettier
2021-06-23 16:34:21 +02:00
David Négrier
9f9cf5a3bb Fixing .gitignore files 2021-06-23 16:30:42 +02:00
David Négrier
4cac260f81 Adding prettier on back and pusher (not running them right now) 2021-06-23 16:23:16 +02:00
David Négrier
f4209515a1
Merge pull request #1080 from thecodingmachine/metadataScriptingApi
Customize metadata with scripting api
2021-06-23 15:57:14 +02:00
David Négrier
d2be9fa931 Adding contributing guide explaining how to setup the precommit hook 2021-06-23 15:54:13 +02:00
David Négrier
c0bfec7b11 Adding Prettier configuration 2021-06-23 15:51:31 +02:00
David Négrier
a5f0cadccd
Create codeql-analysis.yml 2021-06-23 15:29:02 +02:00
David Négrier
6237672855
Create SECURITY.md 2021-06-23 15:26:17 +02:00
jonny
54d392be82 fixed not returnin null if parsed from url 2021-06-23 15:06:38 +02:00
GRL
95d8cf9257 Change requested 2021-06-23 14:54:06 +02:00
GRL
12da5e64f8 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-06-23 14:43:23 +02:00
David Négrier
a3eb715414 Improving wa-maps doc layout 2021-06-23 14:41:35 +02:00
jonny
64847cd465 adjusted null if no hash 2021-06-23 12:42:24 +02:00
jonny
b20b4abb9e allow start hashes in tiles
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-06-23 12:37:50 +02:00
GRL
24cc340cb9 Merge branch 'metadataScriptingApi' of github.com:thecodingmachine/workadventure into metadataScriptAPIV2 2021-06-23 12:02:29 +02:00
GRL
2a2cea2cd5 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-06-23 11:40:08 +02:00
GRL
bdb32a29e1 New methods refactored 2021-06-23 11:32:11 +02:00
David Négrier
633fa9f870
Merge pull request #1210 from jonnytest1/functional-tile-properties
tile propeties can be used for effects
2021-06-23 11:18:02 +02:00
David Négrier
af67d9b513 Migrating WA-Maps page to this repo and documenting the fact that tiles properties can now be used. 2021-06-23 10:44:55 +02:00
David Négrier
b7934d9d03 Merge branch 'develop' of github.com:thecodingmachine/workadventure into functional-tile-properties 2021-06-23 10:40:59 +02:00
David Négrier
bdc4b43c17 Setting up prettier
In order not to wreak havoc on all the open PRs, Prettier will be added slowly,
on every changed file, thanks to Husky (for a precommit hook) and lint-staged, for linting only staged files.
2021-06-23 10:10:53 +02:00
GRL
b50df10a49 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-06-23 09:25:13 +02:00
GRL
85fe92f604 Merge branch 'menu-commands-apiref' of github.com:jonnytest1/workadventure into metadataScriptingApi 2021-06-23 09:18:20 +02:00
David Négrier
ee07f637fa
Merge pull request #1219 from thecodingmachine/rex_outline
Putting an outline on the character name
2021-06-22 18:14:27 +02:00
David Négrier
321fff24e6 Filled the Changelog with past changes 2021-06-22 18:09:55 +02:00
David Négrier
1ef1a1cb22 Removing useless import 2021-06-22 17:47:54 +02:00
David Négrier
d7ff8e4be6
Merge pull request #1215 from thecodingmachine/correctionCustomizeWOKA
Correction of button customize WOKA scene issue
2021-06-22 17:29:52 +02:00
David Négrier
f1d00aac0e
Merge pull request #1211 from thecodingmachine/adminSvelte
Migrating ConsoleGlobalMessageManager in svelte
2021-06-22 17:28:37 +02:00
David Négrier
dc0f3feabf Putting an outline on the character name
In the future, we might want to put an outline on the whole character body but this is harder as the body is actually a container and so we would need to turn this container into a sprite first.
2021-06-22 17:15:18 +02:00
David Négrier
f3086fe49a
Merge pull request #1218 from thecodingmachine/rex_outline
Enabling Outline back on actionable objects
2021-06-22 16:39:34 +02:00
David Négrier
e9dd7ebdd9 Enabling Outline back on actionable objects
Actionable objects (still a prototype) were outlined when you walk next to them.
The OutlinePipeline was broken when moving in Phaser 3.50+.

This PR completely removes the custom OutlinePipeline and replaces it with the rexOutlinePipelinePlugin
that is provided by a third party library and that works great \o/
2021-06-22 16:35:57 +02:00
GRL
cec7087fc2 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-06-22 16:28:45 +02:00
GRL
67d4c6e271 Resolve review 2021-06-22 16:12:53 +02:00
GRL
0728d462a5 Merge branch 'develop' of github.com:thecodingmachine/workadventure into adminSvelte 2021-06-22 16:08:06 +02:00
GRL
be23db5bcf Resolve import and LoadPageEvent issue 2021-06-22 16:07:31 +02:00
David Négrier
2b33db74e6
Merge pull request #1214 from thecodingmachine/dependabot/npm_and_yarn/messages/set-getter-0.1.1
Bump set-getter from 0.1.0 to 0.1.1 in /messages
2021-06-22 15:38:52 +02:00
David Négrier
37893936b9
Merge pull request #1217 from thecodingmachine/animations_doc
Migrating animations documentation
2021-06-22 15:33:11 +02:00
David Négrier
bdbd19c3da
Merge pull request #1216 from thecodingmachine/feature/animated-tiles
Add animated Tiles plugin
2021-06-22 15:32:55 +02:00
David Négrier
d87a14db0d Migrating animations documentation
Migrating the animations documentation page from the website to this repository.
2021-06-22 15:18:41 +02:00
David Négrier
eb526f5b67 Upgrading animatedtiles plugin to trigger an event when an animation occurs and setting the scene to dirty state 2021-06-22 14:21:15 +02:00
GRL
ca3f5c599a Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-06-22 14:00:19 +02:00
GRL
3e29ed4376 Correction of button customize WOKA scene issue 2021-06-22 11:48:08 +02:00
GRL
55d99b24f4 Correction form review and checks 2021-06-22 10:43:20 +02:00
GRL
0cc7ed1647 Merge branch 'develop' of github.com:thecodingmachine/workadventure into adminSvelte 2021-06-22 10:36:16 +02:00
GRL
4fedc30301 Correction form review and checks 2021-06-22 10:27:54 +02:00
GRL
da5ae02a06 Correction form review and checks 2021-06-22 10:22:49 +02:00
David Négrier
1283e86ce8 Adding test map for animated tiles 2021-06-22 10:22:48 +02:00
GRL
8a1c57c434 Correction form review and checks 2021-06-22 10:10:03 +02:00
GRL
267a0bbe4d Correction form review and checks 2021-06-22 09:49:04 +02:00
GRL
5cac4f52bc Correction form review and checks 2021-06-22 09:43:41 +02:00
dependabot[bot]
4334ae8c9d
Bump set-getter from 0.1.0 to 0.1.1 in /messages
Bumps [set-getter](https://github.com/doowb/set-getter) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/doowb/set-getter/releases)
- [Commits](https://github.com/doowb/set-getter/commits/0.1.1)

---
updated-dependencies:
- dependency-name: set-getter
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-21 21:34:46 +00:00
jonny
8be29062f6 reverted import sorting 2021-06-21 18:41:41 +02:00
jonny
64a00481f0 fixed wrong import 2021-06-21 18:39:02 +02:00
jonny
ba1bcf226a menu command api 2021-06-21 18:22:31 +02:00
Kharhamel
5f944d8e4a
Merge pull request #1212 from thecodingmachine/noWhitespaces
FIX: no more whitespaces in player names
2021-06-21 18:02:07 +02:00
kharhamel
42c0d1002f FIX: no more whitespaces in player names 2021-06-21 17:58:04 +02:00
David Négrier
e4dab5fd0d Merge branch 'develop' of github.com:thecodingmachine/workadventure into feature/animated-tiles
# Conflicts:
#	front/package.json
#	front/tsconfig.json
#	front/yarn.lock
2021-06-21 17:26:00 +02:00
GRL
232fd33ec8 Migrating ConsoleGlobalMessageManager in svelte 2021-06-21 17:19:27 +02:00
David Négrier
979ae73d8d Removing old website directory 2021-06-21 17:00:16 +02:00
David Négrier
b59cbcac4c Merge branch 'develop' of github.com:thecodingmachine/workadventure into svelte_video_overlay
# Conflicts:
#	front/package.json
2021-06-21 14:54:32 +02:00
David Négrier
cddade059f Removing commented code 2021-06-21 14:49:41 +02:00
David Négrier
a08f6a33ac Improving naming 2021-06-21 14:43:10 +02:00
David Négrier
77a4d23301 Renaming biggestAvailableArray to biggestAvailableArea + removing duplicated code. 2021-06-21 14:07:03 +02:00
David Négrier
9484acdc6d
Merge pull request #1206 from thecodingmachine/iframe-api-refactor2
Iframe api refactor v2
2021-06-21 13:57:42 +02:00
David Négrier
6101548d89 Fixing bug where only one chat listener can be added. 2021-06-21 13:47:07 +02:00
David Négrier
620bd1ab2c Splitting classes in separated files 2021-06-21 12:26:12 +02:00
David Négrier
c17f006992 Adding list of deprecated methods in the documentation. 2021-06-21 12:13:40 +02:00
David Négrier
ce0a52c227 Merge branch 'develop' of github.com:thecodingmachine/workadventure into iframe-api-refactor2
# Conflicts:
#	front/package-lock.json
2021-06-21 11:53:07 +02:00
Kharhamel
3d1c2dc05a
Merge pull request #1207 from thecodingmachine/fixLoadError
FIX: loading errors after the preload stage should not crash the game anymore
2021-06-21 11:49:14 +02:00
David Négrier
9129ceede1 Improving refactoring of API following @jonnytest1 feedback 2021-06-21 11:48:39 +02:00
kharhamel
0623ee0bf2 HOTFIX: loading errors after the preload stage should not crash the game anymore 2021-06-21 11:44:18 +02:00
jonny
7716fe4b62 run templater on running start script 2021-06-20 19:26:35 +02:00
jonny
5bf943ce77 converted cache to constant lookup time 2021-06-20 19:14:04 +02:00
jonny
92485a02cf tileIndex setting got merged out 2021-06-19 15:46:32 +02:00
jonny
c1d9b2c9ed coverted property map to object 2021-06-19 15:41:58 +02:00
jonny
27ccdf165c fixed merge imports 2021-06-19 15:24:27 +02:00
jonny
74dda8ab69 allow properties on tiles
# Conflicts:
#	front/src/Phaser/Game/GameMap.ts
#	front/src/Phaser/Map/ITiledMap.ts
2021-06-19 15:23:30 +02:00
dependabot[bot]
abfaf73a25
Bump striptags from 3.1.1 to 3.2.0 in /messages
Bumps [striptags](https://github.com/ericnorris/striptags) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/ericnorris/striptags/releases)
- [Commits](https://github.com/ericnorris/striptags/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: striptags
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-18 20:36:36 +00:00
David Négrier
be2aa62efc Adding tests for deprecated and moved functions 2021-06-18 18:29:45 +02:00
David Négrier
34dc5a0bc6 Refactoring WorkAdventureAPI.
Simplifying a lot what was done (even if the new code is a bit less automated, it allows to list exactly the methods we want to see deprecated and to add a notification message)
2021-06-18 17:22:56 +02:00
David Négrier
61809aad21
Merge pull request #1201 from jonnytest1/windows-runner
setup to also run on windows
2021-06-18 16:28:06 +02:00
David Négrier
97e6ad6700 Splitting documentation into several pages. Changing documentation to adapt to new "namespaces" 2021-06-18 11:44:54 +02:00
jonny
0690f088b6 setup to also run on windows 2021-06-18 00:21:54 +02:00
David Négrier
227575043b Removing dead code 2021-06-17 18:56:30 +02:00
David Négrier
4ec92ddf58 Adding new icons for the change layout button 2021-06-17 18:30:08 +02:00
David Négrier
7e506c5cbd Starting splitting the doc in several pages. 2021-06-17 18:05:16 +02:00
Guy Sheffer
3e54e75040
Add workaround for #932 2021-06-17 15:14:54 +03:00
jonny
702f4fe4c0 converted goToRoom to typed call 2021-06-17 11:32:59 +02:00
jonny
318749e5a8 develop merge 2021-06-17 11:30:16 +02:00
jonny
d416deec5e Merge branch 'iframe-api-refactor' of github.com:jonnytest1/workadventure into iframe-api-refactor 2021-06-17 11:30:05 +02:00
Kharhamel
3a569ec0d6
Merge pull request #1095 from thecodingmachine/dependabot/npm_and_yarn/benchmark/ws-7.4.6
Bump ws from 7.3.1 to 7.4.6 in /benchmark
2021-06-17 11:29:33 +02:00
dependabot[bot]
47008c015e
Bump ws from 7.3.1 to 7.4.6 in /benchmark
Bumps [ws](https://github.com/websockets/ws) from 7.3.1 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.3.1...7.4.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-17 09:25:14 +00:00
Kharhamel
5159f69a59
Merge pull request #576 from Informatic/fix/dependencies-cleanup
back,pusher,uploader: cleanup dependencies
2021-06-17 11:24:26 +02:00
David Négrier
f6554a1082 Merge branch 'develop' of github.com:thecodingmachine/workadventure into iframe-api-refactor
# Conflicts:
#	front/src/iframe_api.ts
2021-06-17 11:23:56 +02:00
jonny
efa1e52ce1 Merge remote-tracking branch 'remotes/workadventure-main/develop' into iframe-api-refactor 2021-06-17 11:19:21 +02:00
David Négrier
d6ec0d22d3 Code cleanup 2021-06-17 10:35:08 +02:00
David Négrier
d533894a74 Fixing warnings and moving biggest area compute in store 2021-06-17 10:13:23 +02:00
David Négrier
d3544e2d97 Ignoring "no tracks" warning (cause really, we cannot add tracks to live streams) 2021-06-17 10:07:27 +02:00
David Négrier
d888b694cc Adding button to change layout 2021-06-17 10:07:27 +02:00
David Négrier
3b278d0498 Removing dead code 2021-06-17 10:07:27 +02:00
David Négrier
76261de805 Enabling back the open report feature 2021-06-17 10:07:27 +02:00
David Négrier
ca56a78814 Limiting the max height of video elements 2021-06-17 10:07:27 +02:00
David Négrier
5cf5e0ce2b Changing the way we focus a video element.
Now, only one video element can be important.
2021-06-17 10:07:27 +02:00
David Négrier
ac7fa164b6 Adding importance handling 2021-06-17 10:07:27 +02:00
David Négrier
e7b0f859a5 Migrating the video overlay in Svelte (WIP) 2021-06-17 10:07:27 +02:00
David Négrier
e6264948b1
Merge pull request #946 from jonnytest1/load-page-api
Load page iframe-api
2021-06-16 18:10:10 +02:00
jonny
8d2baa8d1a added workadventure specific url 2021-06-16 17:36:52 +02:00
jonny
1147a21dde fixed documentation 2021-06-16 17:34:00 +02:00
jonny
c1e202b7b1 renamed to goToRoom 2021-06-16 17:16:00 +02:00
David Négrier
a910ec1639
Merge pull request #1190 from thecodingmachine/svelte_check
Adding svelte-check to the build process
2021-06-15 18:40:14 +02:00
David Négrier
0afdbf7040 Fixing Svelte-check errors 2021-06-15 18:34:11 +02:00
David Négrier
085a4d41fd Adding svelte-check to the build process
Type checking in Svelte was not enabled (because we were not running svelte-check).
This PR adds:

- run svelte-check in watch mode in development
- run svelte-check in CI
2021-06-15 18:08:16 +02:00
David Négrier
39a7b95e32
Merge pull request #1189 from thecodingmachine/develop
Deploy 2021-06-15
2021-06-15 17:20:19 +02:00
Kharhamel
7e9506874c
Merge pull request #1188 from thecodingmachine/sceneCleanup
scene cleanup
2021-06-15 17:01:57 +02:00
kharhamel
c559b2104b scene cleanup 2021-06-15 15:32:40 +02:00
jonny
7712bd685b fixed merge errors 2021-06-15 15:19:45 +02:00
jonny
238f333b81 Merge remote-tracking branch 'remotes/workadventure-main/develop' into load-page-api
# Conflicts:
#	front/src/Api/Events/IframeEvent.ts
#	front/src/Api/IframeListener.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/src/iframe_api.ts
2021-06-15 15:05:49 +02:00
Kharhamel
407f46f248
Merge pull request #1187 from thecodingmachine/touchIframeResize
FIX: fixed the cowebsite aside dom not being visible on some browser
2021-06-15 14:40:26 +02:00
kharhamel
40e2ba196d FIX: fixed the cowebsite aside dom not being visible on some browser 2021-06-15 14:35:29 +02:00
David Négrier
eb895ceb58
Merge pull request #1178 from thecodingmachine/touchIframeResize
FIX: cowebsite resize now works on touchscreens
2021-06-15 11:42:41 +02:00
David Négrier
cbc80391d8
Merge pull request #1186 from thecodingmachine/customSceneNewArrow
CustomizeScene buttons use moveHorizontally and moveVertically
2021-06-15 11:38:48 +02:00
GRL
09da69c24a CustomizeScene buttons use moveHorizontally and moveVertically 2021-06-15 11:16:44 +02:00
kharhamel
a5779095f8 FIX: cowebsite resize now works on touchscreens 2021-06-15 10:55:18 +02:00
David Négrier
1880022971
Merge pull request #1154 from thecodingmachine/gameSizeFix
Display Game
2021-06-15 09:16:00 +02:00
GRL
b04016f30f Merge branch 'develop' of github.com:thecodingmachine/workadventure into gameSizeFix 2021-06-15 09:06:47 +02:00
David Négrier
9c14bd9c90
Merge pull request #1183 from thecodingmachine/develop
Deploy 2021-06-14
2021-06-14 22:19:02 +02:00
David Négrier
0172d7dc3b
Merge pull request #1182 from thecodingmachine/fix_viewport_on_resize
Fixing size of camera on resize
2021-06-14 18:49:37 +02:00
David Négrier
6bca3469b6 Removing useless import 2021-06-14 18:44:20 +02:00
David Négrier
1fa03e44df Fixing size of camera on resize
The size of the Camera after a change in zoom is only computed on the "render" step.
Therefore, we should wait the "render" step to call GameScene.onResize.

Closes #1180
2021-06-14 18:40:58 +02:00
David Négrier
9f9584633c
Merge pull request #1181 from thecodingmachine/disable_screensharing_button_on_error
Disable screensharing button if user refuses rights
2021-06-14 18:22:20 +02:00
David Négrier
6af9b5d0fc Disable screensharing button if user refuses rights
If the user refuses the popup to screen-share, we should switch back the button to gray.

Closes #1179
2021-06-14 18:18:57 +02:00
David Négrier
f16514db21
Merge pull request #1177 from thecodingmachine/bugfix/1167
Making code more robust regarding scene being null in Character class
2021-06-14 16:54:12 +02:00
David Négrier
a8ef43ca84
Merge pull request #1176 from thecodingmachine/fix_character_scene_slow
Fixing bug slowing down the CustomizeScene a lot
2021-06-14 16:41:55 +02:00
David Négrier
dcd44f283f Making code more robust regarding scene being null in Character class
Not sure how this can happen but it does.
Closes #1167
2021-06-14 16:40:33 +02:00
David Négrier
e3ee66527a Fixing bug slowing down the CustomizeScene a lot
By forcing the containers to be updated only in the "update" method, we seem to be solving some bugs regarding the way sprites are handled.
There is still an issue though. Some times, for some reasons, the update list seems to be growing a lot.
The more we click the left/right arrow to choose a character, the slower it gets (but with this commit, it does not lock anymore)
2021-06-14 16:32:09 +02:00
GRL
b239edb266 Clean code 2021-06-14 16:09:41 +02:00
GRL
c2fba35360 Suppression blue back-ground 2021-06-14 16:04:55 +02:00
GRL
281b8580cd Use window and not viewport in css for main-container 2021-06-14 15:54:22 +02:00
GRL
f103a919f2 Merge branch 'develop' of github.com:thecodingmachine/workadventure into gameSizeFix 2021-06-14 14:25:59 +02:00
David Négrier
94333a7438
Merge pull request #1164 from thecodingmachine/wildcard-cert-in-cd
Installing Wildcard certificate in CD environments
2021-06-11 15:40:00 +02:00
David Négrier
2159e70399 Deleting old certificate if one already exists 2021-06-11 15:31:27 +02:00
David Négrier
fdf4b901b8 Fixing URL in message 2021-06-11 15:02:54 +02:00
David Négrier
2260f772a7 Create the K8S namespace if required 2021-06-11 14:52:59 +02:00
David Négrier
a6effe0a29 Fixing scp 2021-06-11 14:44:23 +02:00
David Négrier
9b985a2a0c Providing Base 64 config file 2021-06-11 14:37:43 +02:00
David Négrier
83089f1197 Fixing key access rights 2021-06-11 14:25:02 +02:00
David Négrier
c07d54f4c3 Fixing key access rights 2021-06-11 14:13:23 +02:00
David Négrier
8b5055c7ef Disabling host check (not a big deal since we are only downloading files from the host) 2021-06-11 14:06:08 +02:00
David Négrier
9330a3ec89 Installing Wildcard certificate in CD environments
Because we are limited to 50 domain names per week with Let's encrypt, the continuous delivery environment is pretty fast failing to get new certificates.
We need to download a Wilcard certificate instead for the CD environments.
2021-06-11 11:57:27 +02:00
Kharhamel
c44d453f20
Merge pull request #1160 from thecodingmachine/betterVisitCardBis
FIX: Improved the visuals of the visit card
2021-06-10 17:37:10 +02:00
kharhamel
4d467e9f86 FIX: Improved the visuals of the visit card 2021-06-10 16:57:33 +02:00
GRL
d26502a724 Use HtmlUtils to get DOM Element game 2021-06-10 09:23:25 +02:00
grégoire parant
5a2b3a303a
Improve texture loaded from admin (#1151) 2021-06-09 22:33:42 +02:00
GRL
6868128267 DOM Element game resize at the same time and the same size at the canvas of phaser
Remove VisitCard scss unused
2021-06-09 18:08:14 +02:00
GRL
61180a6e64 The cam of other people in a bubble is at the top of the screen even when a iframe is open on mobile 2021-06-09 15:29:37 +02:00
David Négrier
856b643c6a
Merge pull request #1147 from thecodingmachine/develop
Deploy 2021-06-08
2021-06-08 18:46:10 +02:00
David Négrier
07e6438902
Merge pull request #1145 from thecodingmachine/dimensionMobile
Mobile sizing problem
2021-06-08 18:21:05 +02:00
David Négrier
16a989c19b
Merge pull request #1146 from thecodingmachine/facebookLink
New facebook link
2021-06-08 18:14:39 +02:00
GRL
f6b3b9cfd4 Update facebook link 2021-06-08 18:05:03 +02:00
David Négrier
bcc86d6041
Merge pull request #1144 from thecodingmachine/betterVisitCard
FIX: improved the visit card, cleanup the code
2021-06-08 16:47:13 +02:00
kharhamel
dd45996f9c FIX: improved the visit card, cleanup the code 2021-06-08 16:39:22 +02:00
GRL
4c1dd914eb DOM element game 1OO% height 2021-06-08 16:32:21 +02:00
David Négrier
922ed155ed
Merge pull request #1143 from thecodingmachine/dependabot/npm_and_yarn/benchmark/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /benchmark
2021-06-08 14:36:07 +02:00
David Négrier
7bee3853a1
Merge pull request #1142 from thecodingmachine/dependabot/npm_and_yarn/messages/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /messages
2021-06-08 14:36:00 +02:00
David Négrier
270aaf09fc
Merge pull request #1141 from thecodingmachine/dependabot/npm_and_yarn/uploader/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /uploader
2021-06-08 14:35:52 +02:00
David Négrier
f8d8dae9d7
Merge pull request #1140 from thecodingmachine/dependabot/npm_and_yarn/maps/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /maps
2021-06-08 14:35:43 +02:00
David Négrier
5c9da4a725
Merge pull request #1139 from thecodingmachine/fix-webcam-name
Fixing the cleaning of webcam name
2021-06-08 14:35:13 +02:00
dependabot[bot]
cf8e6e2a76
Bump glob-parent from 5.1.1 to 5.1.2 in /benchmark
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 12:05:46 +00:00
dependabot[bot]
6e241709b1
Bump glob-parent from 5.1.1 to 5.1.2 in /messages
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 12:05:44 +00:00
dependabot[bot]
81160b6dc7
Bump glob-parent from 5.1.1 to 5.1.2 in /uploader
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 12:05:43 +00:00
dependabot[bot]
7697ed053e
Bump glob-parent from 5.1.1 to 5.1.2 in /maps
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 12:05:43 +00:00
David Négrier
01c128e413
Merge pull request #1088 from thecodingmachine/dependabot/npm_and_yarn/front/dns-packet-1.3.4
Bump dns-packet from 1.3.1 to 1.3.4 in /front
2021-06-08 14:05:02 +02:00
David Négrier
fab5c17dc2 Fixing the cleaning of webcam name
Closes #1130
2021-06-08 12:19:07 +02:00
David Négrier
1b89adc604
Merge pull request #1137 from thecodingmachine/fix_script_prod
Fixing scripting origin check
2021-06-08 10:29:55 +02:00
David Négrier
e3223164b6
Merge pull request #1117 from thecodingmachine/selectCharacterFix
Fix : SelectCharacterScene and SelectCompanionScene
2021-06-08 10:29:21 +02:00
David Négrier
0c38f3b55c
Merge pull request #1131 from thecodingmachine/safari-fix
Fix broken layout on EnableCameraScene on mobile
2021-06-08 10:28:38 +02:00
GRL
d615a7c6a5 suppression comments 2021-06-08 10:12:59 +02:00
GRL
7a3921947a dark mode on select 2021-06-08 10:10:33 +02:00
GRL
1cceed2fd6 dark mode on select 2021-06-08 09:52:52 +02:00
GRL
a7cf071971 max height on select on all device and screen 2021-06-08 09:10:06 +02:00
Kharhamel
e2295d2419
Merge pull request #1133 from thecodingmachine/disableVisitCard
FIX: the visit card feature can now be disabled client side
2021-06-07 19:12:37 +02:00
Kharhamel
473a32b57f
Merge pull request #1134 from thecodingmachine/fixEmoteScene
FIX: trying to start a emote after a scene is desotryed should not crash the game
2021-06-07 17:51:35 +02:00
GRL
aa9c3b9f4f max height on select 2021-06-07 17:18:39 +02:00
David Négrier
b03ee5bd53 Fixing scripting origin check
When working on making the openCoWebsite URL relative, we introduced a regression.
In production, the iframe generated by "script" properties have no "src" and therefore, were treated as invalid messages.

This should fix everything in prod.
2021-06-07 16:48:52 +02:00
GRL
c9da38c7ec reduce select field 2021-06-07 16:23:00 +02:00
GRL
000be7aa49 console 2021-06-07 16:12:31 +02:00
kharhamel
1264b286b2 FIX: trying to start a emote after a scene is desotryed should not crash the game 2021-06-07 15:11:54 +02:00
kharhamel
26f21fe6e4 FIX: the visit card feature can now be disabled client side 2021-06-07 15:01:21 +02:00
GRL
88a72e0153 change width of select field 2021-06-07 15:00:01 +02:00
GRL
3e1f10491a font-size reduce by 20%
img width = 1vw
2021-06-07 14:40:38 +02:00
GRL
dd0391687f change font-size
Change width and margin of img on mobile
2021-06-07 14:19:50 +02:00
David Négrier
311c74584c Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-06-07 10:42:27 +02:00
David Négrier
ac911cff4b Properly escaping name in discussion manager 2021-06-07 10:42:08 +02:00
GRL
cbf786fd56 Remove img and margin 2021-06-07 10:29:38 +02:00
GRL
e45198e403 Remove marging bottom of SelectWebcamForm 2021-06-07 10:09:51 +02:00
GRL
23c74bd7aa Create a PR to fix broken layout on EnableCameraScene on mobile 2021-06-07 09:27:49 +02:00
GRL
8f0947aa9c Merge branch 'selectCharacterFix' of github.com:thecodingmachine/workadventure into selectCharacterFix 2021-06-07 09:17:51 +02:00
GRL
edfdc3bf47 comment on pointerTimer and pointerClicked 2021-06-07 09:17:24 +02:00
GRL
dfb02af0f3 comment on pointerTimer and pointerClicked 2021-06-07 09:15:34 +02:00
Kharhamel
d464f94e0f
Merge pull request #1127 from thecodingmachine/fixMobileVisitCard
FIX: temporary fix for visit card on mobile
2021-06-04 19:40:28 +02:00
kharhamel
8afa94aae3 FIX: temporary fix for visit card on mobile 2021-06-04 19:36:30 +02:00
David Négrier
6b8ef48e7f
Merge pull request #1125 from thecodingmachine/develop
Deploy 2021-06-04
2021-06-04 18:25:10 +02:00
David Négrier
4204b9ebf7
Merge pull request #1118 from thecodingmachine/iphoneCompatibility
Iphone compatibility
2021-06-04 18:19:15 +02:00
GRL
3e19234edc Change <dialog> for ErrorDialog in <div> because only Chrome knows <dialog> 2021-06-04 16:32:21 +02:00
David Négrier
bacd260547 Prevents error message from being displayed twice in the same dialog 2021-06-04 16:22:15 +02:00
David Négrier
9f09dc9df2 Adding a special error message for non Safari browsers on iOS < 14.3 2021-06-04 16:19:41 +02:00
David Négrier
469cac9656 Making sure the "stopped screensharing" log is not displayed on startup 2021-06-04 16:08:02 +02:00
David Négrier
01ce94585a Displaying only message in the Dialog error (and not the exception name in front of the message) 2021-06-04 16:07:36 +02:00
GRL
a58d6353cd Merge branch 'develop' of github.com:thecodingmachine/workadventure into iphoneCompatibility 2021-06-04 16:02:46 +02:00
David Négrier
fd4f09588e Adding "playsinline" tag in remote <video> tags for iPhone compatibility (test) 2021-06-04 14:16:21 +02:00
David Négrier
6977963d01
Merge pull request #1108 from thecodingmachine/svelte_error_message
Adding a global error message
2021-06-04 10:38:03 +02:00
David Négrier
2905a5570c Removing commented code 2021-06-04 10:33:24 +02:00
David Négrier
f4ed527fe8 Adding a global error message
This error message should be used for non fatal errors (otherwise, use the ErrorScene).
It is implemented using Svelte and the new "$errorStore".

Use `errorStore.addErrorMessage` to display the error popup with the message.

This PR uses this error message to display a popup explaining the browser is too old for WebRTC.
2021-06-04 10:33:22 +02:00
David Négrier
a8b91561dc Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-06-04 10:07:57 +02:00
David Négrier
b7ac3b8fad Generating HTML link using DOM manipulation rather that string manipulation 2021-06-04 10:07:12 +02:00
GRL
247d508d09 create PR to test iphone compatibility 2021-06-04 10:01:08 +02:00
GRL
0d2b190222 Replace setTimeout by timer manage in Update 2021-06-04 09:39:33 +02:00
Lurkars
417feec56b Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-06-04 09:28:20 +02:00
jonny
dab3f1f844 removed zoned popups 2021-06-03 22:01:42 +02:00
Gregoire Parant
e190c3b8d6 Merge branch 'master' into develop
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2021-06-03 20:15:50 +02:00
grégoire parant
eec15b38bb
Hot Fix open & close iframe (#1115) 2021-06-03 20:05:39 +02:00
Kharhamel
44c2276952
Merge pull request #1099 from thecodingmachine/visitCard
FEATURE: clicking on another player show a contact card when possible
2021-06-03 18:40:45 +02:00
David Négrier
2f98bbaa0e Adding auto deploy to develop branch 2021-06-03 18:35:18 +02:00
kharhamel
c5f3cfe87c FEATURE: clicking on another player show a contact card when possible 2021-06-03 17:58:21 +02:00
GRL
8052877a7b Merge branch 'develop' of github.com:thecodingmachine/workadventure into selectCharacterFix 2021-06-03 17:22:50 +02:00
grégoire parant
fffd36267d
Hot Custom Characters Scene (#1113) 2021-06-03 17:22:31 +02:00
GRL
02ff6fb5bf Add timer so that pointerdown event can't be call two time in one click 2021-06-03 17:08:56 +02:00
GRL
c435b7451e Update don't call createPlayer but call moveUser
Change time of pointerclicked from 100ms to 250ms
Suppression of console.log
2021-06-03 16:54:52 +02:00
David Négrier
1527134eeb
Merge pull request #1112 from thecodingmachine/ios_phaser_sounds
Attempt to switch bubble sound playing into Phaser
2021-06-03 16:13:40 +02:00
David Négrier
46666d17dc Making sure the report audio sound does not break the application on iOS 2021-06-03 15:56:06 +02:00
David Négrier
50e994c674 Attempt to switch bubble sound playing into Phaser
In iOS, we cannot trigger a playing sound if it does not start from a user gesture.
This is a huge bummer for a notification sound!

This is an attempt to switch sound playing to Phaser, which is using under the hood the WebAudio API.
This might solve the issue.
2021-06-03 15:40:44 +02:00
David Négrier
80a698d891 Preventing crash on iOS
On iOS, audio elements must be triggered by a user gesture.
We are catching exceptions thrown in order not to crash.

In the future, we need to find another way to play sounds.
2021-06-03 14:53:58 +02:00
David Négrier
46cd387853
Merge pull request #1107 from thecodingmachine/enableCameraSceneSafari
Fixing camera on safari iphone
2021-06-03 14:42:18 +02:00
David Négrier
ebf217057d Switching to "playsinline" attribute in the video tag (both of them) 2021-06-03 14:31:21 +02:00
David Négrier
9401662f83
Merge pull request #1105 from thecodingmachine/dependabot/npm_and_yarn/front/ws-6.2.2
Bump ws from 6.2.1 to 6.2.2 in /front
2021-06-03 14:15:38 +02:00
grégoire parant
2b13b764b4
Public texture (#1093)
* Public texture

 - Front => Get texture when user connected on public method
 - Front => Anonymous login will be make every connexion to get map details
 - Pusher => `/anonymLogin` permit to get map details and public texture load in customize scene

* Improve texture local user

- Permit to keep previous texture get with 'register' link

* Texture public loading

 - Texture will be load with Room class
 - Fix issue on lazzy loading atttempt

* Remove async await useless
2021-06-03 13:07:52 +02:00
GRL
4fd453ec05 playsinline on video 2021-06-03 12:02:58 +02:00
David Négrier
9e42d9d05b
Merge pull request #1106 from thecodingmachine/safari_fix
Fixing Safari on MacOS compatibility
2021-06-03 10:50:30 +02:00
David Négrier
5f562f49c3 Improving error message 2021-06-03 10:49:12 +02:00
Kharhamel
ba2d7958ce
Merge pull request #1103 from thecodingmachine/fixEmotePinch
FIX: on a touch screen, the menu emote will not open if more than one pointer is used
2021-06-03 10:48:16 +02:00
David Négrier
eb6cfdf53d Fixing missing early return if webcam not available 2021-06-03 10:39:30 +02:00
GRL
8bcfc3cbee Max height on EnableCameraScene 2021-06-03 10:30:53 +02:00
kharhamel
b8ffe5038c FIX: on a touch screen, the menu emote will not open if more than one pointer is used 2021-06-03 10:22:06 +02:00
David Négrier
25f4adc7ad Fixing Safari on MacOS compatibility
The null safe operator is not recognized and was not encoded by Webpack in Svelte expressions (inside {})

+ The Notification API of Safari is old and broken and we need to account for that.
2021-06-03 10:17:38 +02:00
dependabot[bot]
918a37173e
Bump ws from 6.2.1 to 6.2.2 in /front
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-03 08:10:49 +00:00
David Négrier
d9b5642078
Merge pull request #1098 from thecodingmachine/resizeSelect
Menu scene in svelte
2021-06-03 10:10:07 +02:00
GRL
304675bc74 Merge remote-tracking branch 'origin/resizeSelect' into resizeSelect 2021-06-02 18:01:42 +02:00
GRL
59d60f54fe Save zoom level in the gameScene and restore it after the SelectCharacterScene and CustomizeScene 2021-06-02 18:01:36 +02:00
David Négrier
100198b55c Using "standardized-audio-context" to fix compatibility of AudioContext with Safari. 2021-06-02 17:58:58 +02:00
David Négrier
d43633e936 Added an animation when audio message played 2021-06-02 16:52:25 +02:00
David Négrier
f4880cc1d0 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-02 16:48:53 +02:00
David Négrier
267d0a2cd1 Moving audio message to Svelte 2021-06-02 16:46:28 +02:00
GRL
ba038dc75a Merge remote-tracking branch 'origin/resizeSelect' into resizeSelect 2021-06-02 16:08:38 +02:00
GRL
3d9e2ad49a Save zoom level of the game and restore it when quitting the login scenes
SelectCompanionScene with zoom on mobile
2021-06-02 16:08:31 +02:00
David Négrier
faa4c7c08e Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-02 12:27:54 +02:00
David Négrier
395d66e648 Putting grey background under video
Signed-off-by: David Négrier <d.negrier@thecodingmachine.com>
2021-06-02 12:27:46 +02:00
GRL
6fd119c199 Merge remote-tracking branch 'origin/resizeSelect' into resizeSelect 2021-06-02 12:00:50 +02:00
GRL
5bd5245044 SelectCharacterScene and CustomCharacterScene mobile version 2021-06-02 12:00:35 +02:00
David Négrier
321fc3184a Fixing scrollability of enable camera scene page 2021-06-02 10:44:36 +02:00
David Négrier
950c5ace3f Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-02 10:14:42 +02:00
David Négrier
3f20d5b0d1 Trying to fix cam size in portrait and overflow 2021-06-02 10:14:33 +02:00
GRL
e9ec5f26aa Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-02 09:59:44 +02:00
GRL
ea576477cd Border on videocam in enable camera scene 2021-06-02 09:58:34 +02:00
David Négrier
9e35f96ce5 Fixing absolute/relative layouts of Svelte layers 2021-06-02 09:58:00 +02:00
David Négrier
96cd097af8 Fixing cam and controls position 2021-06-02 09:09:23 +02:00
David Négrier
2230f94410 Removed unused message warning 2021-06-01 17:59:00 +02:00
David Négrier
22dff82bd3 Adding back a transition on HelpCameraSettingsPopup 2021-06-01 17:23:16 +02:00
David Négrier
9c9699d2d1 Fixing absolute positioning of Svelte scenes 2021-06-01 17:07:56 +02:00
David Négrier
b04c438d6f Detect webcams unplugged 2021-06-01 16:43:24 +02:00
GRL
9aeb18df37 correction following review by Kharhamel 2 2021-06-01 16:36:13 +02:00
GRL
5735e9da36 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-01 16:31:09 +02:00
GRL
cd482ef1d2 correction following review by Kharhamel 2021-06-01 16:29:49 +02:00
David Négrier
cf9467419d Fixing scene overflow 2021-06-01 16:22:39 +02:00
David Négrier
d04df35506 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-01 16:17:45 +02:00
David Négrier
bf7083effc Migrating EnableCameraScene to Svelte 2021-06-01 16:17:36 +02:00
GRL
2d93be519f Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-01 11:52:55 +02:00
GRL
10e40930e2 Adding map test helpCameraSetting 2021-06-01 11:52:19 +02:00
David Négrier
c7b3e3cd44 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-01 11:19:56 +02:00
David Négrier
47555d5955 Migrating cam to Svelte on Camera setup screen 2021-06-01 11:19:46 +02:00
GRL
9a5300dd2d helpCameraSettingPopup in svelte with nes-css 2021-06-01 11:07:52 +02:00
David Négrier
5839e0b270 Throwing exceptions into store subscribers is wreaking havok 2021-06-01 09:17:01 +02:00
David Négrier
9063ba2a1f Removing call to removed method 2021-06-01 09:12:31 +02:00
David Négrier
59256f4cb9 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-06-01 09:09:11 +02:00
David Négrier
9d6b597552 Starting working towards migrating the help camera popup 2021-06-01 09:08:02 +02:00
GRL
ffcfb7495b Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-05-31 18:06:02 +02:00
GRL
1ed881e0bf arrow up black and white colors 2021-05-31 18:05:34 +02:00
David Négrier
ce645a83ab Fixing display of terms and conditions 2021-05-31 18:02:45 +02:00
GRL
f8cbf41c3a Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-05-31 17:54:07 +02:00
GRL
047337ae81 Merge branch 'resizeSelect' of github.com:thecodingmachine/workadventure into resizeSelect 2021-05-31 17:53:44 +02:00
David Négrier
11fb0aa1d8 Fixing typo 2021-05-31 17:53:27 +02:00
GRL
4923ce8b83 selectCharacterScene and customCharacterScene in svelte 2021-05-31 17:50:14 +02:00
David Négrier
cb03580421 Partial migration of EnableCameraScene to Svelte 2021-05-31 17:49:41 +02:00
David Négrier
13d3227323 Migrating LoginScene to Svelte 2021-05-31 17:03:29 +02:00
GRL
120a488121 Adding selectCompanionStore 2021-05-31 12:16:46 +02:00
GRL
b8873d1277 selectCompanionScene work with svelte 2021-05-31 12:06:11 +02:00
GRL
471ff2bb01 Merge branch 'develop' of github.com:thecodingmachine/workadventure into resizeSelect 2021-05-31 10:21:15 +02:00
GRL
aeb6ad50ff Merge remote-tracking branch 'origin/resizeSelect' into resizeSelect 2021-05-31 10:20:57 +02:00
GRL
1ac108a9b8 correction of resize select character and companion by David 2021-05-31 10:20:48 +02:00
GRL
645af32b4c correction of resize select character and companion 2021-05-31 10:20:30 +02:00
David Négrier
0b13e22574
Merge pull request #1092 from thecodingmachine/cleaning_mediamanager
MediaManager cleanup
2021-05-29 22:48:04 +02:00
David Négrier
90176da888 MediaManager cleanup
- Removing the last reference to the local video stream. Everything is now fetched from the store.
- Remvoing commented code
2021-05-29 22:34:38 +02:00
David Négrier
4077db37e3
Merge pull request #1091 from thecodingmachine/fixing_button_style
Fixing buttons design
2021-05-29 22:08:54 +02:00
David Négrier
236b1ed099
Merge pull request #1090 from thecodingmachine/migrating_listeners_to_store
Removing listeners from MediaManager.
2021-05-29 22:07:15 +02:00
David Négrier
588e5566d0 Fixing buttons design
Fixing the color of camera/microphone/screen sharing buttons that was broken following the migration to Svelte
2021-05-29 22:05:47 +02:00
David Négrier
b7f1461405 Removing listeners from MediaManager.
SimplePeer now reacts only to stores.
2021-05-29 22:04:08 +02:00
David Négrier
5295f923b5
Merge pull request #1086 from thecodingmachine/camera_controls_in_svelte
Switching Camera controls in Svelte
2021-05-28 18:16:51 +02:00
Kharhamel
bc67817d64
Merge pull request #1089 from thecodingmachine/fixLoginError
FIX: better error text in LoginScene
2021-05-28 17:51:55 +02:00
kharhamel
679b5b6b79 FIX: better error text in LoginScene 2021-05-28 17:51:18 +02:00
David Négrier
b3aa8975e9 Switching the video feedback in Svelte 2021-05-28 16:20:02 +02:00
dependabot[bot]
ee3097e6b0
Bump dns-packet from 1.3.1 to 1.3.4 in /front
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 13:41:07 +00:00
Kharhamel
e342096029
Merge pull request #1083 from thecodingmachine/betterNameText
FEATURE: improved the display of player names
2021-05-28 15:40:19 +02:00
kharhamel
12da6ddd6c FEATURE: improved the display of player names, with the font-family 'Press start 2P' and gray outlines 2021-05-28 15:33:10 +02:00
GRL
8f21ea8385 suppression last line of loadtileset 2021-05-28 14:33:16 +02:00
jonny
ed39043bbe this should make one file only 2021-05-28 13:10:30 +02:00
GRL
276b404dd9 Merge remote-tracking branch 'origin/metadataScriptingApi' into metadataScriptingApi 2021-05-28 12:13:25 +02:00
GRL
858a513569 correction of adding custom menu
correction of setProperty
updating CHANGELOG
updating api-reference
2021-05-28 12:13:10 +02:00
David Négrier
d1c22b122c Improving icons centering 2021-05-28 10:48:24 +02:00
David Négrier
cc1eab653a Fixing screen sharing button display 2021-05-28 10:48:13 +02:00
David Négrier
4b77e8c577 Switching Camera controls in Svelte
Moving Camera controls out of HTML + MediaManager and into Svelte components
2021-05-28 09:31:04 +02:00
jonny
8a1376e966 refactored to key based types 2021-05-28 02:28:11 +02:00
jonny
dbb35d102f extracted giant typing block 2021-05-28 01:59:43 +02:00
jonny
5fd82c1188 minor cleanup 2021-05-28 01:50:58 +02:00
jonny
ab631c5dc4 register callbacks
should be done now
2021-05-28 01:46:08 +02:00
jonny
9e6fb755d9 added javascript for setting commands 2021-05-28 01:44:38 +02:00
jonny
fd5b598b63 Bubble [WIP] (still need to do the javascript part) 2021-05-28 01:18:00 +02:00
jonny
540e5783b6 cowebsite
navigation
sound
player
extraction
2021-05-28 01:14:10 +02:00
jonny
ea04dd5303 Merge branch 'iframe-api-refactor' of github.com:jonnytest1/workadventure into iframe-api-refactor 2021-05-28 00:58:11 +02:00
jonny
6a90655c44 Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into iframe-api-refactor 2021-05-28 00:52:42 +02:00
jonnytest1
b35207a578
Merge branch 'develop' into iframe-api-refactor 2021-05-28 00:38:12 +02:00
jonny
cbe93d7164 [WIP] fixed cherry pick conflicts 2021-05-28 00:34:40 +02:00
jonny
2de2d114a1 added typedef for subobject types
extracted popup functions

# Conflicts:
#	front/package-lock.json
#	front/package.json
#	front/src/iframe_api.ts
2021-05-28 00:30:51 +02:00
jonny
1a1ab30574 extraction idea
# Conflicts:
#	front/src/Api/ScriptUtils.ts
#	front/src/iframe_api.ts
2021-05-28 00:29:21 +02:00
David Négrier
5d8d729bd7 Uncommenting action 2021-05-27 18:25:27 +02:00
GRL
6dcb0d3750 first step to change tile 2021-05-27 17:06:39 +02:00
GRL
9cd3ff1d31 Merge branch 'correct-merge' into metadataScriptAPIV2 2021-05-27 10:16:00 +02:00
GRL
acbe4f89a6 Merge branch 'update-game-tiles' into correct-merge 2021-05-27 09:45:25 +02:00
GRL
5565ddd3f4 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-26 17:22:37 +02:00
GRL
e1f0192e61 Adding and updating test map for metadata 2021-05-26 17:18:38 +02:00
David Négrier
474323b95f
Merge pull request #933 from ClementVieilly75/SoundInMapScript
Sound in map script
2021-05-26 16:25:50 +02:00
David Négrier
9aed9713c8 Referencing sound test in index.html 2021-05-26 16:22:58 +02:00
David Négrier
769d9cf314 Added sound loading to changelog 2021-05-26 16:18:58 +02:00
David Négrier
870f16f9c6 Merge branch 'develop' of github.com:thecodingmachine/workadventure into SoundInMapScript 2021-05-26 16:15:33 +02:00
David Négrier
54e300443b Fixing Typing 2021-05-26 16:11:22 +02:00
David Négrier
fac6574cb5 Removing console.log and unused files 2021-05-26 16:08:43 +02:00
David Négrier
1523758106
Merge pull request #1038 from thecodingmachine/dependabot/npm_and_yarn/pusher/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21 in /pusher
2021-05-26 15:50:34 +02:00
David Négrier
701710a2a1
Merge pull request #1037 from thecodingmachine/dependabot/npm_and_yarn/pusher/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /pusher
2021-05-26 15:50:17 +02:00
David Négrier
728c2ee092
Merge pull request #1026 from thecodingmachine/dependabot/npm_and_yarn/messages/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /messages
2021-05-26 15:49:57 +02:00
dependabot[bot]
faff263b80
Bump hosted-git-info from 2.8.8 to 2.8.9 in /pusher
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-26 13:49:56 +00:00
David Négrier
62627ba1b0
Merge pull request #1025 from thecodingmachine/dependabot/npm_and_yarn/benchmark/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /benchmark
2021-05-26 15:49:42 +02:00
David Négrier
a1022f768b
Merge pull request #1024 from thecodingmachine/dependabot/npm_and_yarn/uploader/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /uploader
2021-05-26 15:49:29 +02:00
David Négrier
1bf4475e1b
Merge pull request #1023 from thecodingmachine/dependabot/npm_and_yarn/maps/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /maps
2021-05-26 15:49:17 +02:00
David Négrier
f67ca05147
Merge pull request #1020 from thecodingmachine/dependabot/npm_and_yarn/back/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /back
2021-05-26 15:49:03 +02:00
David Négrier
796aaf82ce
Merge pull request #1060 from thecodingmachine/media_manager_store
Switching MediaManager to using a Svelte store
2021-05-26 15:25:15 +02:00
David Négrier
6d15921674 Fixing screen-sharing button not hidden anymore when hovering button 2021-05-26 12:30:56 +02:00
David Négrier
4f1cab5afe Fixing comments 2021-05-26 12:19:58 +02:00
David Négrier
4c4f310b79 The share screen button is now displayed only when screen sharing makes sense.
Also, fixed the button not aligned bug
2021-05-26 12:12:47 +02:00
David Négrier
dd428bc1e1 Migrating screen sharing to using a store 2021-05-26 12:12:47 +02:00
David Négrier
d32df13f1b Camera now show up when someone is moving and hides 5 seconds after we stop moving.
Also, added an animation to show/hide the webcam.
2021-05-26 12:12:46 +02:00
David Négrier
8af8ccd54b Migrating MediaManager game part to Svelte store 2021-05-26 12:12:18 +02:00
David Négrier
28d78a7988 Switching MediaManager to using a Svelte store
This allows cleaner and more expressive code, especially regarding whether the webcam should be on or off.
2021-05-26 12:11:16 +02:00
David Négrier
4f4d2532b7
Merge pull request #1082 from thecodingmachine/disabling_physics_optim
Moving Physics optim to DirtyScene
2021-05-26 12:08:57 +02:00
David Négrier
bc19cbd525 Moving Physics optim to DirtyScene
The Physics engine is now disabled only if no sprites are moving (if they have no velocity).
Also, if a sprite is moving (if it has a velocity), the dirty state is set.
2021-05-26 12:00:27 +02:00
GRL
17261dfab6 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-26 10:58:25 +02:00
GRL
c8e2416e08 documentation of getCurrentUser, getCurrentRoom and on working with group layer 2021-05-26 10:41:33 +02:00
Kharhamel
177f0eb053
Merge pull request #863 from thecodingmachine/emote
FEATURE: added the possibility to play emotes
2021-05-26 10:26:13 +02:00
GRL
b4fa38bf8c Merge remote-tracking branch 'origin/metadataScriptingApi' into metadataScriptingApi 2021-05-25 17:21:12 +02:00
GRL
a5cb93541a correction from code review 2021-05-25 17:21:02 +02:00
kharhamel
595c5ca64d now use custom emotes with tweens instead of transistions 2021-05-25 16:37:24 +02:00
GRL78
7c44d747de
Apply suggestions from code review
Co-authored-by: David Négrier <d.negrier@thecodingmachine.com>
2021-05-25 11:02:25 +02:00
David Négrier
2814a95a74
Merge pull request #1081 from thecodingmachine/disable_tsx_for_maps
Removing parsing of TSX files in "maps" container
2021-05-25 10:51:52 +02:00
David Négrier
4d18e0ceb4 Removing parsing of TSX files in "maps" container
The TSX extension is used by Typescript (for JSX like files) but ALSO by Tiled (for tilesets).
We don't need the Typescript TSX files so this PR is preventing Typescript from parsing those files in the "maps" container.
2021-05-25 10:43:01 +02:00
GRL
d4bc999c54 pause loading tileset on fly 2021-05-25 10:15:56 +02:00
GRL
36f0cd1a23 Revert "pause for loading tileset on the fly"
This reverts commit a3165a0540.
2021-05-25 10:11:27 +02:00
GRL
343ad6ea96 Revert "preparation for merge with metadataScriptApi"
This reverts commit b18b2fe0e3.
2021-05-25 10:11:25 +02:00
GRL
a7b09e91ba Revert "Merge branch 'update-game-tiles' into metadataScriptingApi"
This reverts commit 428625e61b, reversing
changes made to a3165a0540.
2021-05-25 10:09:58 +02:00
GRL
428625e61b Merge branch 'update-game-tiles' into metadataScriptingApi 2021-05-25 09:54:00 +02:00
GRL
b18b2fe0e3 preparation for merge with metadataScriptApi 2021-05-25 09:50:59 +02:00
GRL
a3165a0540 pause for loading tileset on the fly 2021-05-25 09:39:04 +02:00
GRL
d0aaa0620d Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-25 09:24:26 +02:00
DESKTOP-FMM8UI0\CLV
0c3b9ccfbf Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into SoundInMapScript
# Conflicts:
#	front/src/Api/IframeListener.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/src/iframe_api.ts
#	maps/Tuto/scriptTuto.js
#	maps/Village/Village.json
2021-05-21 17:45:26 +02:00
GRL
1110f4fb7f Revert "Merge branch 'update-game-tiles' into metadataScriptingApi"
This reverts commit 796a9418d3, reversing
changes made to 3506063e65.
2021-05-21 16:24:48 +02:00
GRL
796a9418d3 Merge branch 'update-game-tiles' into metadataScriptingApi 2021-05-21 15:56:35 +02:00
GRL
3506063e65 first step on loading a tileset from a script 2021-05-20 17:09:10 +02:00
GRL
2f9cc393a7 Implementation of getTag of the current user
documentation of getTag
Adding map for test of getTag
2021-05-20 10:57:36 +02:00
GRL
96545c618a Adding maps for test metadata
Documentation of metadata functions/methods
2021-05-20 08:58:05 +02:00
kharhamel
d93b30f982 improved radial menu 2021-05-19 18:11:51 +02:00
kharhamel
35b37a6a88 Added a radial menu to run emotes 2021-05-19 15:17:50 +02:00
kharhamel
a1d52b4265 FEATURE: added the possibility toplay emotes 2021-05-19 15:17:03 +02:00
GRL
ce0a72c6ce Merge branch 'menu-command-api' of github.com:jonnytest1/workadventure into metadataScriptingApi 2021-05-19 09:36:11 +02:00
GRL
b509471140 documentation
documentation of onPlayerMove
documentation of getMap
documentation of getGameState
2021-05-18 17:05:16 +02:00
Lurkars
451fa7dcd7 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-05-18 15:57:40 +02:00
GRL
aa78bf44ef implementation of DataLayerEvent
update GetGameState to add nickname to the returned data
update GameMap to separate phaserLayer and mapLayer
2021-05-18 15:41:16 +02:00
GRL
201fcf6afa Merge branch 'gamestate-api-read' of github.com:jonnytest1/workadventure into metadataScriptingApi 2021-05-18 15:18:35 +02:00
Kharhamel
b57a9957a3
Merge pull request #1058 from thecodingmachine/fixAxiosErrors
FIX: rejected map axios promises are now catched
2021-05-18 12:12:49 +02:00
GRL
2ee62c9e9e Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-18 11:50:03 +02:00
kharhamel
20ec609535 FIX: rejected map axios promises are now catched 2021-05-18 11:45:07 +02:00
GRL
3edfd5b285 GameState is now save in cache
HasPlayerMoved is send when the player is actually moving on the map every 200ms.
2021-05-18 11:33:16 +02:00
David Négrier
2ea731beeb
Merge pull request #1057 from thecodingmachine/physics_flag
Making sure Physics is not enabled several times
2021-05-18 10:26:32 +02:00
David Négrier
c9eb5691b5
Merge pull request #1045 from thecodingmachine/svelte
Installing Svelte in front container
2021-05-18 10:25:54 +02:00
David Négrier
127a4759ac Merge branch 'develop' of github.com:thecodingmachine/workadventure into menu-command-api
# Conflicts:
#	front/src/Api/Events/IframeEvent.ts
#	front/src/Api/IframeListener.ts
#	front/src/iframe_api.ts
2021-05-18 10:16:44 +02:00
David Négrier
9b68faac0e
Fixing JSDoc 2021-05-18 09:53:54 +02:00
David Négrier
4f10dd491c
Merge pull request #1056 from thecodingmachine/dirty_on_resize
Set a global dirty flag on resize
2021-05-18 09:45:51 +02:00
David Négrier
6128f1e431 Making sure Physics is not enabled several times
As part of an energy saving measure, we started disabling physics when the character is not moving and enabling physics again only when the character moves.
However, we enabled Physics on each frame the characeter was moving.
As a result, the Physics system would run several times, slowly slowing the computer down.

This fixes this issue by adding a flag to only enable Physics once.
2021-05-18 09:42:01 +02:00
David Négrier
24dfa2703d Set a global dirty flag on resize
This adds a global "Dirty" flag at the Game level and sets it each time the ScaleManager is modified.
This fixes a bug where the game was not redrawn when a CoWebsite was opening/closing.
2021-05-18 09:20:38 +02:00
David Négrier
54e9e5656b Commenting menu display (for now) 2021-05-17 16:50:35 +02:00
David Négrier
00dd5a8c84 Fixing Yarn 2021-05-17 16:45:52 +02:00
David Négrier
7cc1e5b2c6 Moving styles out of the "dist/" directory 2021-05-17 16:41:40 +02:00
David Négrier
79935593e2 Adding fork-ts-checker-webpack-plugin
This allows offloading type checking to another process and saves ~1-2 seconds for each build.
Also, we can integrate ESLint into the build pipeline and this is dope!
2021-05-17 16:41:38 +02:00
David Négrier
6e7f8507b1 Removing custom stats 2021-05-17 16:41:10 +02:00
David Négrier
849e68ece2 Optimizing build time + inline small files into CSS 2021-05-17 16:41:10 +02:00
David Négrier
db40681be7 Code cleanup 2021-05-17 16:41:10 +02:00
David Négrier
9c4c6f2d53 Fixing Jasmine tests 2021-05-17 16:41:10 +02:00
David Négrier
5cb58d98a0 Adding correct SCSS file integration with Svelte 2021-05-17 16:41:09 +02:00
David Négrier
1885ea42a4 First working example with Svelte (the menu icon shows up on entering the game) 2021-05-17 16:39:56 +02:00
David Négrier
62cc1f73ca Tryig to fix webpack for Svelte 2021-05-17 16:39:56 +02:00
David Négrier
9bc79c3ed3 Adding Svelte to the project 2021-05-17 16:39:55 +02:00
Kharhamel
867f783d5e
Merge pull request #1054 from thecodingmachine/fixWebpackConfig
FIX: webpack config NodePolyfillPlugin
2021-05-17 16:33:04 +02:00
kharhamel
f2dca82642 FIX: webpack config NodePolyfillPlugin 2021-05-17 16:30:19 +02:00
Kharhamel
cfc156d022
Merge pull request #1053 from thecodingmachine/fixWebpackConfig
FEATURE: we now allow a global zoom level of 1.5
2021-05-17 16:17:07 +02:00
kharhamel
a66d42e158 FEATURE: we now allow a global zoom level of 1.5 2021-05-17 16:11:38 +02:00
Lurkars
679c8a5ec5 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-05-17 15:25:26 +02:00
Kharhamel
a6786c7494
Merge pull request #1052 from thecodingmachine/fixWebpackConfig
FEATURE: added new env variables
2021-05-17 15:12:12 +02:00
kharhamel
a23e72454d FEATURE: added the env variable DISABLE_DIRTY_CHECKS 2021-05-17 14:47:34 +02:00
Lurkars
85edd47a49 Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-05-17 14:19:55 +02:00
Kharhamel
99cc1b488f
Merge pull request #1051 from thecodingmachine/fixWebpackConfig
FIX: fixed an error in webpack config
2021-05-17 13:35:57 +02:00
kharhamel
1466d7481c FIX: fixed an error in webpack config 2021-05-17 12:20:07 +02:00
GRL
39539214df documentation of SetProperty 2021-05-17 10:13:48 +02:00
Lurkars
498f23b5fc Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop 2021-05-15 19:02:02 +02:00
David Négrier
fe573893a1
Merge pull request #1039 from thecodingmachine/importsNotUsedAsValues
Setting "importsNotUsedAsValues": "error"
2021-05-13 19:43:34 +02:00
Lurkars
cc44bfac77 port 2021-05-13 16:13:07 +02:00
GRL
43aad4ab14 phaserLayers managed by Gamemap
Implementation of LayersFlattener
Implementation of Setting properties of a layer form script
Update show/hide layer form script
Update unit test of LayersIteratorTest
2021-05-12 14:30:12 +02:00
David Négrier
8aeaf292b3
Merge pull request #1043 from thecodingmachine/webpack_typescript_config
Switching the Webpack configuration file to Typescript
2021-05-12 13:42:37 +02:00
David Négrier
4fcbc146ca Switching the Webpack configuration file to Typescript
This switches the Webpack config file from JS to Typescript.
2021-05-12 13:38:32 +02:00
David Négrier
9bf34a5117
Merge pull request #1040 from thecodingmachine/webpack5
Upgrading all dependencies in front
2021-05-12 11:55:10 +02:00
David Négrier
06058cfc24 Upgrading Typescript target from ES2015 to ES2017. 2021-05-12 11:45:01 +02:00
David Négrier
664a5b6b91 Upgrading ESLint (and ignoring a bunch of interesting rules) 2021-05-12 11:44:41 +02:00
David Négrier
f57c01dee8 Refactoring Webpack files to remove prod file. The prod file is now inferred from the NODE_ENV variable. 2021-05-12 11:28:21 +02:00
David Négrier
8c1e01566a Upgrading all dependencies in front
Upgrading to Webpack 5, Typescript 4, ...
2021-05-12 10:35:14 +02:00
David Négrier
4d4f845b9e Setting "importsNotUsedAsValues": "error"
Turning the "importsNotUsedAsValues" TS config value to "error".
This will require us to use `import type` instead of `import` when we are importing a value that is only used as a type (and therefore that is dropped by the Typescript compiler).

Why this change?
This is a requirement to be able to use Svelte in the future. See https://github.com/sveltejs/svelte-preprocess/issues/206#issuecomment-663193798
2021-05-12 09:13:25 +02:00
dependabot[bot]
aff912da55
Bump lodash from 4.17.20 to 4.17.21 in /pusher
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 23:45:14 +00:00
TabascoEye
2d8997c6d7 turning noise suppresion back on
turning AGC off was a good idea, disabling noise suppresion with it was not.
=> should all end up in the "settings" menu in the end
2021-05-11 18:14:42 +02:00
David Négrier
b56e4b5674
Merge pull request #1036 from tabascoeye/patch-1
turning noise suppresion back on
2021-05-11 18:14:17 +02:00
TabascoEye
627db30410
turning noise suppresion back on
turning AGC off was a good idea, disabling noise suppresion with it was not.
=> should all end up in the "settings" menu in the end
2021-05-11 17:38:28 +02:00
David Négrier
d2b122efe5
Merge pull request #1035 from thecodingmachine/improveDirtyScene
FIX: trackDirtyAnims now listen to more generic events
2021-05-11 17:08:29 +02:00
kharhamel
4ec5ad9e33 FIX: trackDirtyAnims now listen to more generic events 2021-05-11 16:44:31 +02:00
David Négrier
0c279750be Merge branch 'master' of github.com:thecodingmachine/workadventure into develop
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-05-11 16:43:34 +02:00
David Négrier
5674b99734
Merge pull request #1034 from thecodingmachine/close_game_webcam_in_jitsi
Close game webcam when in Jitsi
2021-05-11 15:56:22 +02:00
David Négrier
ad39b43df3 Closing game webcame in Jitsi
When stepping in Jitsi, the game webcam (from mediaManager) was not shut down.
And when enabling/disabling the webcam in Jitsi, the webcam in mediaManager was also
enabled/disabled. This PR fixes those issues.

It also fixes a race condition when closing a Jitsi where the mic/cam would be enabled at the same time.
2021-05-11 14:52:51 +02:00
David Négrier
03a0402b3e
Merge pull request #1033 from thecodingmachine/use_visibility_change_api
Refactoring code to use the "visibilitychange" event
2021-05-11 14:50:22 +02:00
Kharhamel
78d4985d10
Merge pull request #1028 from thecodingmachine/fixOnMapExit
FIX: triggering a map transition now ignores other map transitions for 500ms
2021-05-11 14:21:06 +02:00
kharhamel
f044b3d249 FIX: triggering a map transition now ignores other map transitions for 500ms 2021-05-11 11:05:05 +02:00
David Négrier
23bf78a026 Refactoring code to use the "visibilitychange" event
Using the "visiblitychange" event instead of relying on a "trick" related to RAF being disabled when a window is not open allows us to have cleaner code.
Bonus: the recursive call to "setTimeout" is gone, so the stacktrace growing indefinitely is gone too.
This should make the application a bit more stable.
2021-05-11 10:56:50 +02:00
David Négrier
0229f09ec6
Merge pull request #1032 from thecodingmachine/CheryPickDicussionCircle
Improve focus/blur discussion circle
2021-05-11 10:17:15 +02:00
Gregoire Parant
e50aad0ea0 Add WA logo 2021-05-11 10:13:50 +02:00
Gregoire Parant
52b1c6733b Notification & Camera
- Notification when user is first and not focus on the tab
- Camera focus when user is in discussion circle and back on tab with previous config camera settings
- Camera stay blur if user is in discussion circle and not back on the tab

# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2021-05-11 10:13:38 +02:00
David Négrier
5f6d9e060c
Merge pull request #1027 from thecodingmachine/fix_resize_helpcamera
Fixing "camera popup" always display on resize
2021-05-11 10:05:52 +02:00
GRL
ab7b06f71e Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-11 09:44:53 +02:00
jonny
8cef4f6e90 Merge remote-tracking branch 'remotes/workadventure-main/develop' into gamestate-api-read
# Conflicts:
#	front/src/Api/IframeListener.ts
2021-05-10 21:48:11 +02:00
jonny
2c4c98b0e5 limited event trigger to max 10 per second 2021-05-10 21:44:15 +02:00
jonny
8e136cebe8 added callback on playermove - gets quite delayed after walking for a few seconds 2021-05-10 21:27:17 +02:00
grégoire parant
0fd743bcac
HotFix sound meter (#1029) 2021-05-10 20:49:17 +02:00
grégoire parant
bd4cf5d7f7
Fix error context sound meter (#1009) 2021-05-10 19:55:43 +02:00
David Négrier
0411d5e493 Fixing "camera popup" always display on resize
This fixes a bug where the "camera popup" window was always displayed when the screen was resized.
2021-05-10 19:05:01 +02:00
David Négrier
58482f8ae6 Improving Changelog 2021-05-10 19:01:29 +02:00
dependabot[bot]
003bdf18cb
Bump hosted-git-info from 2.8.8 to 2.8.9 in /messages
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 16:58:41 +00:00
dependabot[bot]
e0d496c7b7
Bump hosted-git-info from 2.8.8 to 2.8.9 in /benchmark
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 16:57:51 +00:00
dependabot[bot]
50ee2e9810
Bump hosted-git-info from 2.8.8 to 2.8.9 in /uploader
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 16:57:50 +00:00
David Négrier
a95d592659
Merge pull request #1004 from thecodingmachine/dependabot/npm_and_yarn/back/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21 in /back
2021-05-10 18:57:46 +02:00
dependabot[bot]
25d1e575ef
Bump hosted-git-info from 2.8.8 to 2.8.9 in /maps
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 16:57:45 +00:00
David Négrier
4606173ed1
Merge pull request #1003 from thecodingmachine/dependabot/npm_and_yarn/messages/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21 in /messages
2021-05-10 18:57:30 +02:00
David Négrier
954b87db41
Merge pull request #1002 from thecodingmachine/dependabot/npm_and_yarn/maps/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21 in /maps
2021-05-10 18:57:16 +02:00
David Négrier
cd8501d80e
Merge pull request #1001 from thecodingmachine/dependabot/npm_and_yarn/uploader/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21 in /uploader
2021-05-10 18:57:04 +02:00
GRL
cf811c547b documentation of show/hide layer simplification 2021-05-10 17:29:50 +02:00
GRL
973b3405ef documentation of show/hide layer 2021-05-10 15:10:11 +02:00
GRL
fd931c4884 Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-10 14:45:41 +02:00
GRL
8edd29abaa suppression console.log 2021-05-10 14:43:00 +02:00
dependabot[bot]
3b6daa99c0
Bump hosted-git-info from 2.8.8 to 2.8.9 in /back
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 11:50:12 +00:00
Kharhamel
6e868408ed
Merge pull request #1018 from thecodingmachine/fixStagingBuild
added back automatic deploy of staging 3
2021-05-10 12:45:25 +02:00
kharhamel
d1f1c8f470 added back automatic deploy of staging 3 2021-05-10 12:44:35 +02:00
David Négrier
d2bab4e7ef
Merge pull request #1017 from thecodingmachine/change_xxxplayercontrol_name
Renaming restorePlayerControls/disablePlayerControls
2021-05-10 12:35:34 +02:00
Kharhamel
dfc57d0529
Merge pull request #1016 from thecodingmachine/fixStagingBuild
added back automatic deploy of staging  2
2021-05-10 12:29:11 +02:00
kharhamel
de1768b7bb added back automatic deploy of staging 2 2021-05-10 12:20:46 +02:00
David Négrier
c025d1798b Renaming restorePlayerControls/disablePlayerControls
Putting "controls" in the plural form:

- restorePlayerControl => restorePlayerControls
- disablePlayerControl => disablePlayerControls
2021-05-10 12:18:06 +02:00
David Négrier
3a82481d70 Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2021-05-10 12:10:57 +02:00
David Négrier
c1da898c59
Merge pull request #1015 from thecodingmachine/markdown_doc
Splitting scripting API doc in 2
2021-05-10 12:09:20 +02:00
David Négrier
293c57568e Splitting scripting API doc in 2
Splitting scripting API doc in 2 docs:

- scripting.md: contains the explaination on how to enable scripting
- api-reference.md: contains the list of all available functions
2021-05-10 12:08:52 +02:00
Kharhamel
8cb32c34b5
Merge pull request #1014 from thecodingmachine/fixStagingBuild
added back automatic deploy of staging
2021-05-10 12:03:23 +02:00
kharhamel
9a8b10bbf5 added back automatic deploy of staging 2021-05-10 11:56:08 +02:00
GRL
cd2d090a8b Merge branch 'develop' of github.com:thecodingmachine/workadventure into metadataScriptingApi 2021-05-10 11:46:16 +02:00
GRL
841bf29764 auto update show/hide layer 2021-05-10 11:20:07 +02:00
GRL
a6ba8d41b9 implement show/hide layer with scripting 2021-05-10 11:19:18 +02:00
David Négrier
945ff446a9
Merge pull request #1012 from thecodingmachine/markdown_doc
Adding Markdown documentation relative to scripting
2021-05-10 10:56:43 +02:00
David Négrier
e0ac8abd51
Merge pull request #1011 from thecodingmachine/markdown_doc
Adding Markdown documentation relative to scripting
2021-05-10 10:54:16 +02:00
David Négrier
bc88a7d3ed Adding Markdown documentation relative to scripting 2021-05-10 10:47:55 +02:00
jonny
ce0c7ea3eb Merge remote-tracking branch 'remotes/workadventure-main/develop' into gamestate-api-read 2021-05-10 10:01:53 +02:00
jonny
8aa34cecef Merge branch 'load-page-api' of github.com:jonnytest1/workadventure into load-page-api 2021-05-10 09:59:12 +02:00
jonny
a5260c0831 Merge remote-tracking branch 'remotes/workadventure-main/develop' into load-page-api 2021-05-10 09:58:59 +02:00
jonny
4758820aa4 Merge remote-tracking branch 'remotes/workadventure-main/develop' into menu-command-api 2021-05-10 09:54:39 +02:00
David Négrier
44eb25e9f6
Merge pull request #1006 from jonnytest1/typed-api-events
Typed api events
2021-05-10 09:13:49 +02:00
jonny
46996f7049 moved event trigger out of index array 2021-05-10 01:34:33 +02:00
jonny
8db72d2dfd refactored to Array of tile 2021-05-10 01:34:32 +02:00
jonny
bed45a8310 cherry pick conflicts 2021-05-10 00:31:54 +02:00
jonny
ffe03d40f5 option to update tile
# Conflicts:
#	front/src/Api/Events/ApiUpdateTileEvent.ts
#	front/src/Api/IframeListener.ts
#	front/src/Phaser/Game/GameScene.ts
2021-05-10 00:30:32 +02:00
jonny
91148035ec polyfill generic message event 2021-05-09 21:46:40 +02:00
jonny
cf06f29ef8 fixed cherry pick conflicts 2021-05-09 21:38:11 +02:00
jonny
8da5bf9f8e typed iframe api events
# Conflicts:
#	front/src/Api/IframeListener.ts
#	front/src/iframe_api.ts
2021-05-09 21:36:48 +02:00
jonnytest1
cb19721dca
Merge branch 'develop' into load-page-api 2021-05-07 20:02:08 +02:00
jonnytest1
2922ae4603
Merge branch 'develop' into menu-command-api 2021-05-07 19:59:58 +02:00
DESKTOP-FMM8UI0\CLV
e655edd9bd export class Popup and Soud of Iframe Api
let become const in SoundManager
2021-05-07 17:03:07 +02:00
dependabot[bot]
b141da1475
Bump lodash from 4.17.20 to 4.17.21 in /back
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 13:45:33 +00:00
dependabot[bot]
543397efe4
Bump lodash from 4.17.20 to 4.17.21 in /messages
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 13:45:29 +00:00
dependabot[bot]
9c620de649
Bump lodash from 4.17.20 to 4.17.21 in /maps
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 13:45:25 +00:00
dependabot[bot]
3a00ecab8f
Bump lodash from 4.17.20 to 4.17.21 in /uploader
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 13:44:51 +00:00
David Négrier
5605e63e5f
Merge pull request #998 from thecodingmachine/skiprender2
Skip "render" if nothing changed on screen (2)
2021-05-07 15:44:08 +02:00
Gregoire Parant
62a6eabc88 Merge branch 'master' into develop 2021-05-07 00:07:43 +02:00
grégoire parant
0e32238505
HotFix custom WOKA (#999) 2021-05-06 19:58:08 +02:00
David Négrier
66490c9083 Adding test map to test energy consumption 2021-05-06 16:31:39 +02:00
David Négrier
6b4d064f19 Merge branch 'develop' of github.com:thecodingmachine/workadventure into skiprender2
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
#	front/src/index.ts
2021-05-06 16:25:13 +02:00
David Négrier
189dba2e21 Fixing memory leak when switching scenes 2021-05-06 15:38:24 +02:00
David Négrier
3b5f105daf Setting the dirty state automatically when there is an animation frame 2021-05-06 15:38:22 +02:00
David Négrier
6d3cbc573c Instruct systems with 2 GPUs to use the low power GPU (to save battery) 2021-05-06 15:36:49 +02:00
David Négrier
0c5e5ef578 Skip "render" if nothing changed on screen
For each requested animation frame (RAF) in Phaser, Phaser calls the "update" method, then the "render" method of each scenes.
The "render" method takes some time (and energy) to perform the rendering.

The fact is we probably don't need to call "render" if nothing changed on the screen (which happens most of the frames in a typical WorkAdventure game).

This commit is therefore overloading the "Game" class of Phaser to add a "dirty" flag.

Scenes can now add a "isDirty()" method. If all displayed scenes are pristine (not dirty), Phaser will skip rendering the frame altogether.

This saves "a lot" of energy, resulting in laptops that are not overheating when using WorkAdventure \o/
2021-05-06 15:36:45 +02:00
David Négrier
271300aa8d
Merge pull request #982 from jonnytest1/baseUrlFix
fixed url cannot be relative
2021-05-06 15:09:13 +02:00
Gregoire Parant
1440faf825 Merge branch 'master' into develop 2021-05-06 00:57:55 +02:00
grégoire parant
46978d26f9
Add entry map village WorkAdventure (#997) 2021-05-06 00:53:04 +02:00
jonny
a24ca078e6 use iframe url if no script
# Conflicts:
#	front/src/Api/IframeListener.ts
2021-05-05 19:15:32 +02:00
David Négrier
fea1de36a4
Merge pull request #974 from tabascoeye/patch-1
allow numbers in nickname again
2021-05-05 18:44:01 +02:00
David Négrier
f085393730
Merge pull request #992 from tabascoeye/patch-2
getting rid of special char in filename
2021-05-05 18:34:46 +02:00
David Négrier
77d14ee7ce
Merge pull request #994 from thecodingmachine/resolution
Improving centering of HTML elements in setup scenes
2021-05-05 18:33:49 +02:00
David Négrier
989528f729 Updating changelog 2021-05-05 17:14:28 +02:00
David Négrier
3751b0e2bc Removing RESOLUTION and ZOOM_LEVEL settings: they are no more needed or supported 2021-05-05 17:11:03 +02:00
David Négrier
7ae66a63a4 Refactoring centering of DOM elements 2021-05-05 17:10:39 +02:00
David Négrier
9c4a0245a3
Merge pull request #924 from thecodingmachine/resolution
Improving mobile rendering / adding zoom / pinch
2021-05-05 16:21:13 +02:00
David Négrier
c1be97e366 Adding test cases for mobile 2021-05-05 16:18:37 +02:00
David Négrier
04448c3c50 Fixing button position in webcam setting page 2021-05-05 15:46:02 +02:00
David Négrier
cd2873e9d3 Fixing CI 2021-05-05 13:14:00 +02:00
David Négrier
4b89e08ea6 Reverting hard coded environment variable 2021-05-05 12:17:06 +02:00
David Négrier
bede7abdd8 Removing mousewheel to up down plugin 2021-05-05 12:15:13 +02:00
David Négrier
10bd073b7d Fixing center computation of popup 2021-05-05 12:12:56 +02:00
David Négrier
7d2cc66f11 Fixing pointer-events interaction preventing virtual joystick from working 2021-05-05 11:56:24 +02:00
David Négrier
82073098e0 Merge branch 'develop' of github.com:thecodingmachine/workadventure into resolution 2021-05-05 11:01:11 +02:00
David Négrier
a6ad1674e3 Fixing broken resize 2021-05-05 09:51:04 +02:00
David Négrier
f66e69cb75 Improving pinch (virtual joystick stops when pinch begins) 2021-05-05 09:35:24 +02:00
grégoire parant
4d0220e118
Merge pull request #990 from thecodingmachine/develop
Release 04/05

- WorkAdventure Village
- Fix loader
- Create sound meter
2021-05-05 02:05:07 +02:00
grégoire parant
71eb3f3b69
Improvement feature circle discussion (#977)
* Improvment circle discussion
 - Change to lissen start event of WebRTC connection

* Update help allow navigator and waring message
 - Show warning message.
 - Use help camera allow setting to show modal and help user.
 - Change feature to show the modal only when user have need the information on allow navigator access

* Create soud for video discussion
2021-05-05 01:49:04 +02:00
Gregoire Parant
83159a121f Revert logo loading and fix it 2021-05-04 15:47:45 +02:00
Gregoire Parant
c8692a08ce Revert "Fix loader logo WA (#991)"
This reverts commit fa3ffe4d7a.
2021-05-04 15:15:23 +02:00
grégoire parant
fa3ffe4d7a
Fix loader logo WA (#991) 2021-05-04 14:28:30 +02:00
David Négrier
59b391e983 Prevent WA scale manager from zooming too much 2021-05-04 14:08:40 +02:00
TabascoEye
8d45338044
re-upload without accent in filename 2021-05-04 13:50:07 +02:00
TabascoEye
2b30bea3e0
Delete sol_intérieur.png 2021-05-04 13:49:32 +02:00
TabascoEye
ec02b11b7f
remove accent from filename 2021-05-04 13:48:20 +02:00
grégoire parant
622e0c6130
Add WA logo in village map (#989) 2021-05-04 12:39:00 +02:00
David Négrier
613ff5d463 Adding zoom out limit 2021-05-04 12:09:00 +02:00
David Négrier
85efe208b3 Changing default map for docker-compose single-domain 2021-05-04 11:35:55 +02:00
David Négrier
04d3cf8593 Adding HdpiManager to start and scale from a default resolution that is correct by default for the game.
Fixing VirtualJoystick on resize.
2021-05-04 11:35:33 +02:00
jonnytest1
5069099000
fixed typing in chat still causes character to move (#965) 2021-05-03 20:26:42 +02:00
grégoire parant
95ec5dc3f6
Merge pull request #917 from ClementVieilly75/MapWA_Feature
Map village with new WA Office and features presented
2021-05-03 20:12:33 +02:00
jonnytest1
0a5dffd034
Update ScriptUtils.ts 2021-05-03 16:11:16 +02:00
jonny
cd77af318d added more properties
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-05-01 19:45:23 +02:00
jonny
d674ac9e0c fixed url cannot be relative 2021-05-01 17:43:31 +02:00
David Négrier
4c55b5657f
Merge pull request #973 from thecodingmachine/better_error_message
Improving error messages
2021-04-30 13:31:04 +02:00
TabascoEye
7592a71bd5
remove test case with numbers being invalid in nickname 2021-04-30 10:58:01 +02:00
TabascoEye
2b2c60cbe3
allow numbers in nickname again
closes #972
2021-04-30 10:51:23 +02:00
David Négrier
3c9d477c06 Improving error messages
Trying to put more expressive and helpful error messages for the end user.
2021-04-30 09:33:18 +02:00
grégoire parant
1c20b33d4e
Merge pull request #971 from thecodingmachine/develop
Add error message (#970)
2021-04-30 00:15:40 +02:00
grégoire parant
925545d74f
Add error message (#970)
- Error link not found
 - Error user was banned
 - Error access dinied on the world
2021-04-29 23:47:30 +02:00
Kharhamel
d1ef4a7342
Merge pull request #969 from thecodingmachine/develop
Deployment bis 29/04/2021
2021-04-29 18:47:51 +02:00
Kharhamel
7cd7d22e8b
Merge pull request #968 from thecodingmachine/releaseBuild
FIX: now used a slugified tag for prod deployment
2021-04-29 18:46:49 +02:00
kharhamel
0af3657acb FIX: now used a slugified tag for prod deployment 2021-04-29 18:44:46 +02:00
Kharhamel
0b749a4cab
Merge pull request #967 from thecodingmachine/develop
Déployment 29/04/2021
2021-04-29 18:32:29 +02:00
Kharhamel
b4f2b005e1
Merge pull request #963 from thecodingmachine/releaseBuild
FIX: fixed the deploy workflow to also build images on new releases
2021-04-29 18:20:59 +02:00
kharhamel
7bd524ba55 FIX: fixed the deploy workflow to also build images on new releases 2021-04-29 18:11:24 +02:00
jonny
99bd9d88d9 renamed api method "exitSceneTo" 2021-04-29 10:56:56 +02:00
jonny
99926a89b2 added goToPage.json with the loadPAge Api call to the index.html 2021-04-29 10:55:01 +02:00
jonny
8f1aea1c43 Merge remote-tracking branch 'remotes/workadventure-main/develop' into load-page-api 2021-04-29 10:49:14 +02:00
jonny
8f6c65384a added example script for map exit 2021-04-29 10:43:51 +02:00
Kharhamel
746f1029a8
Merge pull request #687 from malteriechmann/patch-1
Run containers in the background using detached mode
2021-04-29 10:39:47 +02:00
Kharhamel
a984151912
Merge pull request #904 from thecodingmachine/improvetestcases
Improving test cases
2021-04-29 10:37:08 +02:00
kharhamel
fe27169745 solved conflict with develop 2021-04-29 10:31:16 +02:00
Kharhamel
398326b3aa
Merge pull request #959 from thecodingmachine/dependabot/npm_and_yarn/front/ssri-6.0.2
Bump ssri from 6.0.1 to 6.0.2 in /front
2021-04-29 10:18:33 +02:00
David Négrier
2e4b03efff
Merge pull request #962 from thecodingmachine/bugfix/add_template_to_single_domain
Adding templater call to single domain startup
2021-04-29 09:45:16 +02:00
David Négrier
d29dee3bd4 Adding templater call to single domain startup
The docker-compose.single-domain.yaml was missing a call to the templater script.
As a result, the first run would fail unless docker-compose.yaml was started before.

Closes #947
Closes #957
2021-04-29 09:42:15 +02:00
grégoire parant
19ae575b4f
HotFix style help modal (#960) 2021-04-29 01:49:09 +02:00
dependabot[bot]
1e42de9155
Bump ssri from 6.0.1 to 6.0.2 in /front
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-28 23:28:10 +00:00
grégoire parant
5c0b5ef74b
HotFix release v1.3.1 (#958)
- Update camera style support mobile
 - Fix admin console error
2021-04-29 01:26:09 +02:00
grégoire parant
c2f62e2610
Merge pull request #956 from thecodingmachine/develop
Release 28/04 v1.3.1
2021-04-28 00:01:18 +02:00
Gregoire Parant
16397fe978 Merge branch 'master' into develop 2021-04-27 23:59:25 +02:00
grégoire parant
9b69910cb8
WIP: Update style for mobile (#942)
* Update style for mobile

 - Update style for mobile modale

* Fix overscroll

* Change css properties overflow

* Revert "Change css properties overflow"

This reverts commit 612fcc7e007fb03c7f72e5fa4b8a0604a184ae7d.

* rm image

* Update view mobile

* Fix CI
2021-04-27 23:58:33 +02:00
GRL78
57194fd0a1
Add maps for test (#915) 2021-04-27 23:45:28 +02:00
Kharhamel
94e564f135
Merge pull request #955 from thecodingmachine/fixCleanup
FIX: fixed cleanup for real this time
2021-04-27 18:26:12 +02:00
kharhamel
79701fe227 FIX: fixed cleanup for real this time 2021-04-27 18:18:20 +02:00
Kharhamel
76a21cafa0
Merge pull request #954 from thecodingmachine/restrictCD
FIX: fixed cleanup workflow
2021-04-27 17:28:03 +02:00
kharhamel
3ce5c2ec45 FIX: fixed cleanup workflow 2021-04-27 17:17:54 +02:00
Kharhamel
c6ed2c5c57
Merge pull request #953 from thecodingmachine/restrictCD
FIX: fixed cleanup workflow
2021-04-27 17:03:45 +02:00
kharhamel
7a8765826e FIX: fixed cleanup workflow 2021-04-27 16:51:57 +02:00
jonny
6295c8275e reset menu items on map change 2021-04-27 16:40:56 +02:00
Kharhamel
c19201b636
Merge pull request #952 from thecodingmachine/restrictCD
edited CD domain in deeployer config
2021-04-27 16:37:37 +02:00
kharhamel
ea009d912e edited CD domain in deeployer config 2021-04-27 16:30:35 +02:00
Kharhamel
998e051a45
Merge pull request #940 from thecodingmachine/restrictCD
FIX: the deploy action now only start when the label 'deploy' is applied to the PR
2021-04-27 15:49:15 +02:00
jonny
4069e87872 replace menu items if already present 2021-04-27 12:40:29 +02:00
jonny
fafaabb6e7 script api can add menu commands
# Conflicts:
#	front/src/Api/IframeListener.ts
#	front/src/iframe_api.ts
2021-04-27 12:07:02 +02:00
jonny
79e530f0e6 launch jsons + type fixes 2021-04-27 00:04:08 +02:00
jonny
6e847b5f58 Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into develop 2021-04-27 00:02:05 +02:00
kharhamel
30cf078df5 FIX: the deploy action now only start when the label 'deploy' is applied to the PR 2021-04-26 18:33:03 +02:00
grégoire parant
4e09246c7f
Merge pull request #939 from thecodingmachine/develop
Release 26/04/2021
2021-04-26 13:42:27 +02:00
David Négrier
ca628d9a90
Merge pull request #901 from thecodingmachine/text_display
Adding the ability to display "Text" objects from Tiled
2021-04-26 11:30:34 +02:00
David Négrier
08ca95b143 Fixing WorkWrap 2021-04-26 11:28:15 +02:00
David Négrier
22cb41dc29 Adding the ability to display "Text" objects from Tiled
I honestly don't believe text objects look good on map, and in real maps, I think text should be written on tiles.

However, for a variety of use cases (like in test maps in the /maps/test directory, it can be useful to be
able to display some text easily on a map.

This PR adds the ability to display this text.

Note: the "font" support cannot work correctly, as Tiled is listing fonts from the local
system, and those fonts are not available in a browser.
2021-04-26 11:28:13 +02:00
David Négrier
e37ab7d8ad
Merge pull request #899 from thecodingmachine/Lurkars/map-group-layer-support
Map group layer support (2)
2021-04-26 11:26:21 +02:00
David Négrier
6e5fa2c514 Initiating CHANGELOG file 2021-04-26 11:21:36 +02:00
David Négrier
6815fe7a0a Added a new LayersIterator class
This class iterates recursively over layers, flattening groups.
This enables us to simplify the code when we iterate layers. We can remove all recursive function calls in the GameScene code (it is delegated to the LayersIterator)
2021-04-26 11:21:34 +02:00
Lurkars
66b90be0da remove redundancy 2021-04-26 11:20:28 +02:00
Lurkars
93b7b7bc91 removed redundancy, fix for startLayer 2021-04-26 11:20:28 +02:00
Lurkars
9b6be3466b support for group layer of Tiled (excludes 'start' layer) 2021-04-26 11:20:28 +02:00
grégoire parant
f0d277af32
Nickname not centered in video-container (#935)
* Nickname not centered in video-container

#823
2021-04-24 15:45:58 +02:00
Gregoire Parant
364c1d3e98 Merge branch 'master' into develop 2021-04-24 10:39:49 +02:00
grégoire parant
61c8830e24
Merge pull request #934 from thecodingmachine/HotFixStyleMessgae
HotFix Fix style message displaying
2021-04-24 10:37:33 +02:00
Gregoire Parant
0c72378001 Fix style message displaying
#926
2021-04-24 10:36:53 +02:00
grégoire parant
d9620c373f
Merge pull request #918 from thecodingmachine/newStartMobileScene
Mobile started scene
2021-04-23 19:51:45 +02:00
Gregoire Parant
b934d3404f Fix feedback WorkAdventure team 2021-04-23 19:29:43 +02:00
DESKTOP-FMM8UI0\CLV
b79d76fc2e parameter soundConfig is now optionnal
if user call mySound.play() the sound will be played with the base SoundConfig
2021-04-23 17:03:17 +02:00
DESKTOP-FMM8UI0\CLV
f8bab9ce6b Map Village with all the tilesSets 2021-04-23 15:39:45 +02:00
DESKTOP-FMM8UI0\CLV
f03f8076f3 Sound in Script Done
Fom script user can load, play and stop sound
2021-04-23 15:35:34 +02:00
David Négrier
4f4f499d47 Making alone mode more robust
This fixes a number of issues where the game was attempting to access a non existing connection (in alone mode)
2021-04-23 13:44:04 +02:00
Gregoire Parant
f11e936143 Refactoring & fix feedback WorkAdventure 2021-04-23 03:59:14 +02:00
Gregoire Parant
8e52b8597c Merge branch 'develop' into newStartMobileScene
# Conflicts:
#	front/src/Phaser/Login/EnableCameraScene.ts
#	front/src/Phaser/Login/LoginScene.ts
#	front/src/Phaser/Login/SelectCharacterScene.ts
#	front/src/Phaser/Login/SelectCompanionScene.ts
2021-04-22 23:36:21 +02:00
Gregoire Parant
d7f00b505a Update Companion Scene for mobile 2021-04-22 13:10:23 +02:00
Gregoire Parant
3697ddabfa Fix responsive Camera Settings 2021-04-22 11:47:59 +02:00
Gregoire Parant
3df32de83b Update camera and adapte for mobile 2021-04-22 11:26:35 +02:00
Kharhamel
1251cbdc76
Merge pull request #925 from thecodingmachine/touchZones
FIX: use phaser Zones instead of rectangles objects to create tap zones
2021-04-22 10:28:28 +02:00
Gregoire Parant
0a04f5d631 Finish select character scene and custom character scene 2021-04-22 02:29:13 +02:00
kharhamel
c8ba3d8ab9 FIX: use phaser Zones instead of rectangles objects to create tap zones 2021-04-21 18:27:33 +02:00
kharhamel
6a2326c4b3 WIP: testing new resolution config 2021-04-21 18:04:00 +02:00
DESKTOP-FMM8UI0\CLV
517c0e86cb Can play Sound from a map script
add sound in the TutoMap
2021-04-21 16:47:19 +02:00
jonny
3836d5037c game state can be read out by the client APIs
# Conflicts:
#	front/src/Api/IframeListener.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/src/iframe_api.ts
2021-04-21 15:56:52 +02:00
jonny
006195e8cc rewrote to run in event loop 2021-04-21 11:54:37 +02:00
jonny
6c6789411a added loadPage Api call 2021-04-21 11:20:17 +02:00
David Négrier
f9f6abe7b3 Switching setTimeout to false 2021-04-21 10:37:20 +02:00
David Négrier
84bd5eff50 Bump Phaser version
This reverts commit f2c3d6f158.
Also, updates all dependencies to their latest allowed version.

# Conflicts:
#	front/package.json
#	front/yarn.lock
2021-04-21 10:35:38 +02:00
Gregoire Parant
78d888ffaf Update menu mobile
- Add mobile style share modal
- Add mobile style settings modal
- Add menu mobile style
2021-04-21 00:53:45 +02:00
Lurkars
405f7b1137 audio player volume improvements 2021-04-20 21:37:48 +02:00
Gregoire Parant
20e0a2553e Update cowebsite mobile style 2021-04-20 21:11:05 +02:00
Gregoire Parant
30c1825abd Update syle mobile
- update my video side
- update user video side
- update button video cam and microphone side
2021-04-20 19:54:37 +02:00
Gregoire Parant
09d5e0b689 Fix center select name modal 2021-04-20 18:58:19 +02:00
Gregoire Parant
2c862fe7e7 Refactor Login Scene 2021-04-20 18:49:42 +02:00
DESKTOP-FMM8UI0\CLV
676dbcc9d0 Map village with new WA Office and features presented 2021-04-20 16:56:48 +02:00
Kharhamel
5dc2f0ac47
Merge pull request #898 from thecodingmachine/touchZoom
FEATURE: add the ability to zoom in and out using touch screen
2021-04-20 14:51:08 +02:00
kharhamel
341b048d6c improved the visuals of the joystick 2021-04-20 14:26:52 +02:00
kharhamel
415d8f9466 the joystick is now visible only when pointer is down 2021-04-20 10:52:06 +02:00
Gregoire Parant
5e8951fdaa Merge branch 'master' into develop 2021-04-19 21:19:35 +02:00
grégoire parant
d44e449e92
Merge pull request #916 from thecodingmachine/HotFixPerformance
HotFix performance
2021-04-19 21:17:26 +02:00
Gregoire Parant
e7b5bb261d HotFix performance
- Change forceSetTimeOut to false and permit to freeze the scene.
 - Fix style sending audio message
 - Fix banned message from admin console
2021-04-19 20:19:40 +02:00
kharhamel
56287a2958 put the virtual joystick into the userInputManager and restricted it to touchscreens 2021-04-19 18:10:33 +02:00
David Négrier
06f6b3153c
Merge pull request #913 from ClementVieilly75/FTUEPopup
Ftue popup
2021-04-19 16:24:02 +02:00
Gregoire Parant
f7daa6e3f5 Merge branch 'master' into develop 2021-04-19 16:05:31 +02:00
grégoire parant
a43afbc124
Merge pull request #914 from thecodingmachine/hotfix-map-tuto
Hotfix redirect map tuto
2021-04-19 15:55:39 +02:00
Gregoire Parant
dab74460bb Hotfix redirect map tuto 2021-04-19 15:45:46 +02:00
DESKTOP-FMM8UI0\CLV
7e6a8b477d Debug state of share Screen button 2021-04-19 15:16:56 +02:00
DESKTOP-FMM8UI0\CLV
b9d9a78868 Link changed in Tutov3
Change position of cam and buttons share/cam/Mic
2021-04-19 14:42:49 +02:00
DESKTOP-FMM8UI0\CLV
d31021c02d Replace share screen logo 2021-04-19 14:19:16 +02:00
David Négrier
cb1dcb5786
Merge pull request #908 from ClementVieilly75/FTUEPopup
Unsubscribe to iframeEvents in CleanUpClosingScene
2021-04-19 11:24:43 +02:00
DESKTOP-FMM8UI0\CLV
5028a54422 Unsubscribe to iframeEvents in CleanUpClosingScene 2021-04-19 10:19:30 +02:00
David Négrier
94317be1ae Improving test cases
This PR improves test cases by adding a "index.html" webpage listing test maps
and by adding text in the map, explaining what needs to be tested.
2021-04-17 21:31:09 +02:00
David Négrier
110511461a Fixing WorkWrap 2021-04-17 18:55:39 +02:00
David Négrier
16daf7332a Adding the ability to display "Text" objects from Tiled
I honestly don't believe text objects look good on map, and in real maps, I think text should be written on tiles.

However, for a variety of use cases (like in test maps in the /maps/test directory, it can be useful to be
able to display some text easily on a map.

This PR adds the ability to display this text.

Note: the "font" support cannot work correctly, as Tiled is listing fonts from the local
system, and those fonts are not available in a browser.
2021-04-17 12:05:54 +02:00
Kharhamel
afd2ea2d03
Merge pull request #897 from thecodingmachine/maxPerGroup
FEATURE: added the env variable MAX_PER_GROUP
2021-04-16 17:19:01 +02:00
kharhamel
d7a74baa9d FEATURE: add the ability to zoom in and out using touch screen 2021-04-15 16:37:58 +02:00
kharhamel
ce2c5e0cb5 FEATURE: added the env variable MAX_PER_GROUP 2021-04-15 15:50:51 +02:00
Gregoire Parant
a42e873f64 Merge branch 'master' into develop 2021-04-14 20:11:41 +02:00
grégoire parant
085cf9045c
Merge pull request #891 from thecodingmachine/HotFixForm
Hot fix form
2021-04-14 20:10:31 +02:00
David Négrier
1a4f178728
Update front/src/Phaser/Menu/MenuScene.ts 2021-04-14 15:57:57 +02:00
Kharhamel
71898bff7d
Merge pull request #896 from thecodingmachine/fixXss
FIX: calling emitPlayGlobalMessage in pusher without the admin tag will throw an error
2021-04-14 12:21:04 +02:00
kharhamel
5ebb0c94e6 FIX: calling emitPlayGlobalMessage in pusher without the admin tag will throw an error 2021-04-14 11:56:54 +02:00
Piotr Dobrowolski
603fc0a591
Merge branch 'develop' into fix/dependencies-cleanup 2021-04-13 21:33:56 +02:00
Kharhamel
3874b2bc2b
Merge pull request #688 from tabascoeye/patch-2
disable automatic gain control on microphone
2021-04-13 18:20:56 +02:00
Kharhamel
faade46400
Merge pull request #894 from thecodingmachine/topVerticalMode
FIX: in vertical mode, the coWebSite now open from the top
2021-04-13 15:16:06 +02:00
Kharhamel
4bbfd4f12f
Merge pull request #893 from workadventure-xce/fix/first_login
Fix first login with empty local storage
2021-04-13 15:15:32 +02:00
Gregoire Parant
ba8d3020eb Merge branch 'master' into HotFixForm 2021-04-13 12:33:04 +02:00
grégoire parant
f5f4ee229b
Merge pull request #895 from thecodingmachine/hotFixKeyUp
HotFix
2021-04-13 12:32:18 +02:00
Gregoire Parant
4119f69879 HotFix
- Key up m when user write message
 - Size game share
2021-04-13 12:30:15 +02:00
kharhamel
f82551016a FIX: in vertical mode, the coWebSite now open from the top 2021-04-13 11:34:14 +02:00
Kharhamel
bbc42d2986
Merge pull request #873 from workadventure-xce/feature/mobile_support
Mobile/touch support
2021-04-13 09:49:47 +02:00
PizZaKatZe
633bdfcaff Always enable virtual joystick
Keeps 'toggle fullscreen' as a separate game setting.
2021-04-13 02:00:06 +02:00
PizZaKatZe
340caaff32 Make virtual joystick transparent 2021-04-13 02:00:05 +02:00
PizZaKatZe
9c9d262782 Make movement speed depend on joystick force 2021-04-13 02:00:05 +02:00
PizZaKatZe
e713120434 Reposition joystick (thx @TabascoEye) 2021-04-13 02:00:04 +02:00
PizZaKatZe
c3230bc2b3 Integrate virtual joystick 2021-04-13 02:00:03 +02:00
PizZaKatZe
e75fb9a6a9 Add touch support to companion selection scene 2021-04-13 02:00:02 +02:00
PizZaKatZe
5462af0dc7 Fix first login with empty local storage
During first login on a new domain the local storage is empty. This led
to a TypeError and hence blank black screen.
2021-04-13 01:58:32 +02:00
PizZaKatZe
edd4e9e95d Add touch support for Jitsi and website triggers 2021-04-13 00:23:40 +02:00
¯\_(ツ)_/¯
aab65298aa Add touch support to character customization screen 2021-04-13 00:23:40 +02:00
PizZaKatZe
e807350279 Add touch input support to login scenes (thx @TabscoEye) 2021-04-13 00:23:37 +02:00
PizZaKatZe
c7dcaec940 Make login text input field touch capable (thx @TabscoEye) 2021-04-13 00:19:06 +02:00
Gregoire Parant
270cdb5c82 Button "CREATE MAP" must redirect user on production server 2021-04-12 20:44:29 +02:00
Gregoire Parant
1693819b6a HotFix Share Form height 2021-04-12 20:23:00 +02:00
grégoire parant
2a6221afe2
Merge pull request #889 from thecodingmachine/HotFixStyle
HotFix style WorkAdventure
2021-04-12 19:30:06 +02:00
Gregoire Parant
6a08ca656f Add TODO 2021-04-12 18:26:36 +02:00
Gregoire Parant
4fc9a12b95 HotFix style WorkAdventure 2021-04-12 18:17:04 +02:00
Kharhamel
8cdf572685
Merge pull request #870 from joberthel/feature/player-companion
Added companion (pet) to player
2021-04-12 18:11:07 +02:00
Kharhamel
29d43d7776
Merge pull request #878 from thecodingmachine/localStorageGhost
FIX: improved the validation from localstorage for username and characterLayers
2021-04-12 14:56:51 +02:00
kharhamel
8e467f3e10 FIX: improved the validation from localstorage for username and characterLayers 2021-04-12 14:48:00 +02:00
David Négrier
5ad7787cd5
Merge pull request #887 from thecodingmachine/develop
Deploy 2021-04-11
2021-04-11 21:31:54 +02:00
David Négrier
34a0fc5014
Merge pull request #886 from thecodingmachine/npm_package_for_iframe_api_typings
Allowing loading HTTP local resources from a HTTPS endpoint.
2021-04-11 21:25:42 +02:00
David Négrier
3dd2a634a0 Allowing loading HTTP local resources from a HTTPS endpoint.
By default, maps are loaded in HTTPS if WorkAdventure is running in HTTPS, and in HTTP is WorkAdventure is running in HTTP.
Also, if WorkAdventure is running in HTTP and map loading fails, we try map loading in HTTPS (useful when we are working on WorkAdventure locally and want to load a map on a secure domain).

This commit adds the last combination: If WorkAdventure is running in HTTPS, and map loading fails in HTTPS **AND** if the map URL is targetting "localhost", "*.localhost" or "127.0.0.1", then we attempt to load the resource in HTTP.

Why?

"localhost" is considered secure context by modern browsers. So even if a page is loaded in HTTPS, it can load resources from any secure context (including localhost in HTTP).

This means that from "https://play.workadventu.re", I can now test a map running locally on my machine (served by a classic webserver without any certificate).
This change should make map testing easier, since map developers will not have to install the whole WorkAdventure project to test their map locally.
2021-04-11 14:56:03 +02:00
David Négrier
5beefcd274
Merge pull request #885 from thecodingmachine/npm_package_for_iframe_api_typings
Creating a dedicated package for iframe API typings
2021-04-11 11:38:50 +02:00
David Négrier
728fd4779c Dynamically fetching correct version and generating declarations only for npm lib 2021-04-11 11:32:56 +02:00
David Négrier
0f7ac7ba8b Added empty .npmignore to override .gitignore 2021-04-10 19:14:36 +02:00
David Négrier
6acf0ff047 Creating a dedicated package for iframe API typings
If users are willing to use Typescript to develop scripts for maps, they will need typings for the `WA` object.
This commit creates a new package (@workadventure/iframe-api-typings) that contains only the `iframe_api.d.ts` file.

The file is generated from the build of the front and isolated in this package.
This is necessary because the iframe_api.js file is supposed to always be loaded from WorkAdventure directly (and there is no @workadventure/iframe-api package and there will never be one)
2021-04-10 18:50:46 +02:00
Johannes Berthel
8d4e0c3e88 added companion compatibility with phaser 3.54.0 2021-04-09 18:30:30 +02:00
David Négrier
a1f06ffbd5
Merge pull request #883 from ClementVieilly75/FTUEPopup
Ftue popup
2021-04-09 17:41:39 +02:00
David Négrier
d80681c40b
Merge branch 'develop' into FTUEPopup 2021-04-09 17:40:26 +02:00
DESKTOP-FMM8UI0\CLV
8720354c87 exit Url changed : tcm/workadventure/floor0 2021-04-09 16:39:37 +02:00
DESKTOP-FMM8UI0\CLV
2c84d9a07d position of popups changed
clear log in gameScene
2021-04-09 16:34:01 +02:00
DESKTOP-FMM8UI0\CLV
d52c983ab9 Merge branch 'FTUEPopup' of https://github.com/ClementVieilly75/workadventure into FTUEPopup 2021-04-09 14:35:20 +02:00
DESKTOP-FMM8UI0\CLV
46cc7b3b3b add pannels 2021-04-09 14:35:15 +02:00
Johannes Berthel
32784d6775 Merge branch 'develop' into feature/player-companion 2021-04-08 23:37:36 +02:00
David Négrier
f77a02f0cd
Merge pull request #881 from thecodingmachine/develop
Deploy 2021-04-08
2021-04-08 21:52:25 +02:00
Johannes Berthel
73e515c236 don't show companion scene after first refresh 2021-04-08 18:42:05 +02:00
David Négrier
fb6a529e4a
Merge pull request #879 from ClementVieilly75/FTUEPopup
map village + popUp go to page
2021-04-08 12:02:50 +02:00
David Négrier
34e89fa63e
Update maps/Village/scriptMapVillage.js 2021-04-08 12:02:14 +02:00
DESKTOP-FMM8UI0\CLV
0f4034854c Add closePopup function 2021-04-08 10:50:41 +02:00
DESKTOP-FMM8UI0\CLV
eb66ab3fdd Supp arrow white 2021-04-08 10:17:52 +02:00
DESKTOP-FMM8UI0\CLV
af69510bc8 Modif popup positions and add arrow 2021-04-08 09:41:53 +02:00
David Négrier
aac8cc8d67
Merge pull request #848 from thecodingmachine/develop
Deploy 2021-03-29
2021-04-07 15:24:13 +02:00
DESKTOP-FMM8UI0\CLV
39074511a4 map village + popUp go to page 2021-04-07 13:06:30 +02:00
Johannes Berthel
2438470088 fixed rectangle resize issue 2021-04-06 20:31:08 +02:00
Johannes Berthel
fb90111cdf refactored companion selection scene 2021-04-06 20:12:10 +02:00
Johannes Berthel
187e21eed9 load texture inside game scene instead inside of inside companion class 2021-04-06 19:10:18 +02:00
Johannes Berthel
e5a196a42b implemented feedback 2021-04-06 18:54:45 +02:00
Johannes Berthel
7c6b73efdb don't show companion selection during first connexion flow 2021-04-06 18:36:46 +02:00
grégoire parant
575c1a9f23
Merge pull request #861 from joberthel/fix/use-selected-video-quality
Use selected video quality during webcam initialization
2021-04-06 15:08:03 +02:00
Johannes Berthel
6c512fb7cd fixed linting 2021-04-03 00:18:08 +02:00
Johannes Berthel
8c35860f2a show select companion scene after customize scene 2021-04-02 23:49:25 +02:00
Johannes Berthel
4aa082d83b Merge branch 'develop' into feature/player-companion 2021-04-02 23:40:30 +02:00
Johannes Berthel
3187520e7b companion behaviour fine tuning 2021-04-02 23:36:06 +02:00
Johannes Berthel
38c06ce8ff navigate from select character scene to select companion scene 2021-04-02 23:17:04 +02:00
Johannes Berthel
6ee4889773 added change companion button to menu 2021-04-02 23:13:03 +02:00
Johannes Berthel
52303c0bd6 added select companion scene 2021-04-02 23:00:51 +02:00
Johannes Berthel
4cfce15695 only remove listener if scene was not already destroyed 2021-04-02 21:29:45 +02:00
Johannes Berthel
e4d324e5fa removed unused import 2021-04-02 21:26:42 +02:00
Johannes Berthel
fc3a503bcf don't fail if companion texture is not found 2021-04-02 21:26:24 +02:00
Johannes Berthel
c07079051a transmit companion to remote players 2021-04-02 21:21:11 +02:00
Johannes Berthel
2ad712807b add companion only on local player 2021-04-02 17:14:34 +02:00
Kharhamel
6e7b1f3ef6
Merge pull request #867 from thecodingmachine/roomEdition
FEATURE: editing a room in the admin trigger a refresh system
2021-04-02 15:29:39 +02:00
kharhamel
88cc15cd02 FEATURE: editing a room in the admin trigger a refresh system 2021-04-02 15:22:02 +02:00
Johannes Berthel
5a91e15580 add companion to remote player 2021-04-01 18:51:51 +02:00
David Négrier
8529037493
Merge pull request #864 from thecodingmachine/singledomain
Adding support for single domain deployments
2021-04-01 09:04:26 +02:00
David Négrier
9235809d53
Merge pull request #866 from thecodingmachine/dependabot/npm_and_yarn/pusher/y18n-3.2.2
Bump y18n from 3.2.1 to 3.2.2 in /pusher
2021-04-01 08:59:40 +02:00
Johannes Berthel
80a5d2e30e added random companion to player 2021-04-01 00:33:05 +02:00
dependabot[bot]
f18562577e
Bump y18n from 3.2.1 to 3.2.2 in /pusher
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 18:46:01 +00:00
Kharhamel
512c370f3f
Merge pull request #865 from thecodingmachine/cowebsiteControls
FEATURE: improved the fullscreen and close buttons
2021-03-31 18:45:49 +02:00
kharhamel
a30923ceae FEATURE: improved the fullscreen and close buttons to be in the aside element 2021-03-31 18:39:51 +02:00
David Négrier
adf2e60d54 Fixing issue with double slash in websocket URL 2021-03-31 17:50:27 +02:00
David Négrier
e166c69b58 Fixing reading of the relative URL in RommConnection 2021-03-31 16:38:51 +02:00
David Négrier
651dfc63f4 Fixing TURN server config 2021-03-31 16:38:30 +02:00
David Négrier
11a1428c89 Fixing broken live-reload 2021-03-31 16:20:21 +02:00
David Négrier
f2e64c8763 Fixing missing API_URL warning 2021-03-31 16:20:11 +02:00
David Négrier
3ef1f0dc7b [Breaking change] UPLOADER_URL and ADMIN_URL are now true URLs (and not only host name) and API_URL is replaced by PUSHER_URL
API_URL is still accepted for BC compatibility of the self-hosted deployments.

This will allow deploying on a single domain, using a reverse proxy that acts on the path.
This however means that the config needs to be changed for all WorkAdventure deployments.
2021-03-31 16:00:14 +02:00
David Négrier
cd7a332b4c Improving error throwing and handling in pusher/admin/front 2021-03-31 15:49:01 +02:00
David Négrier
9bfd07f00c Merge branch 'develop' of github.com:thecodingmachine/workadventure into singledomain 2021-03-31 15:17:29 +02:00
Mewp
6f1fc08b82 Add a docker-compose file for hosting under a single domain. 2021-03-31 12:11:00 +02:00
David Négrier
c2398efdc4
Merge pull request #860 from thecodingmachine/dependabot/npm_and_yarn/front/y18n-4.0.1
Bump y18n from 4.0.0 to 4.0.1 in /front
2021-03-31 09:25:14 +02:00
David Négrier
189e4313ea
Merge pull request #859 from thecodingmachine/dependabot/npm_and_yarn/back/y18n-3.2.2
Bump y18n from 3.2.1 to 3.2.2 in /back
2021-03-31 09:25:02 +02:00
David Négrier
9768055946
Merge pull request #858 from thecodingmachine/dependabot/npm_and_yarn/messages/y18n-3.2.2
Bump y18n from 3.2.1 to 3.2.2 in /messages
2021-03-31 09:24:51 +02:00
Johannes Berthel
441416f312 use frame rate setting for initialization 2021-03-30 22:38:44 +02:00
David Négrier
dd0d1fa49f
Merge pull request #854 from thecodingmachine/loadhttpsmapsfromhttp
Allow loading https maps from http protocol
2021-03-30 17:57:38 +02:00
David Négrier
a68cf38cdc
Merge pull request #856 from thecodingmachine/alonemode
Adding an "alone" mode
2021-03-30 17:56:19 +02:00
dependabot[bot]
cff4c154ce
Bump y18n from 4.0.0 to 4.0.1 in /front
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 14:33:07 +00:00
dependabot[bot]
b63ad7ceb7
Bump y18n from 3.2.1 to 3.2.2 in /back
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 14:32:38 +00:00
dependabot[bot]
92439b5899
Bump y18n from 3.2.1 to 3.2.2 in /messages
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 14:32:34 +00:00
David Négrier
02fb42b68a
Merge pull request #790 from thecodingmachine/iframe_api
Adding an API for inter-iframe communication
2021-03-30 16:31:30 +02:00
David Négrier
559e15ebb6 Adding an "alone" mode
In "alone" mode (or single-player mode), WorkAdventure does not connect to the server at all.
In order to enter the "alone" mode, you need to add "?alone=true" to the URL.

"alone" mode can be useful for tutorials (First Time User Experience) where you want to explain how WorkAdventure works without being disturbed by other users.
2021-03-30 16:08:49 +02:00
David Négrier
b6edefbe4e Allow loading https maps from http protocol
In a development environment, we often run in HTTP.
The problem is that WorkAdventure will attempt to load maps using the HTTP protocol (even if the map is on a remote server that is available only in HTTPS).
This commit adds a "fallback". If we are in HTTP (so in a development environment) and if the map fails to load correctly, we will try again, but in HTTPS.

This allows development environment to load maps hosted on a HTTPS enabled server easily.
2021-03-28 18:35:01 +02:00
David Négrier
ad4f8e892e
Merge pull request #852 from joberthel/fix-starting-position
use map tilewidth to calculate starting position instead of hardcoded value
2021-03-28 17:50:28 +02:00
David Négrier
ccb80317ee Changing exit URL of Tuto map 2021-03-28 17:33:10 +02:00
David Négrier
ee53d8f0b8 Hiding iframe in prod 2021-03-28 17:21:10 +02:00
David Négrier
8b90a14c39 Fix import 2021-03-28 17:07:00 +02:00
David Négrier
aaaa192b71 Merge branch 'develop' of github.com:thecodingmachine/workadventure into iframe_api
# Conflicts:
#	front/dist/.gitignore
#	front/dist/index.tmpl.html
#	front/src/Phaser/Game/GameScene.ts
#	front/src/WebRtc/CoWebsiteManager.ts
2021-03-28 16:53:15 +02:00
David Négrier
07666f6ce2
Merge pull request #797 from ClementVieilly75/FTUEPopup
Popup early dev
2021-03-28 16:43:21 +02:00
David Négrier
98aa94bb12 Minor changes 2021-03-28 16:36:02 +02:00
Johannes Berthel
5375528d7c use map tilewidth instead of hardcoded values 2021-03-27 13:57:50 +01:00
Kharhamel
4b8a2aca34
Merge pull request #849 from thecodingmachine/unloadingFixes
improved the back to better handle ghost connexions
2021-03-26 15:32:09 +01:00
kharhamel
3b6fe8da8d improved the back to better handle ghost connexions 2021-03-26 15:14:10 +01:00
Kharhamel
77c40985c4
Merge pull request #847 from thecodingmachine/unloadingFixes
improved the unloading process to not create a useless socket
2021-03-26 14:50:02 +01:00
David Négrier
d269596702
Fixing Discord invite link 2021-03-26 14:33:55 +01:00
kharhamel
886daebfea improved the unloading process to not create a useless socket 2021-03-26 14:19:37 +01:00
David Négrier
30e12702eb
Merge pull request #838 from thecodingmachine/fixChromeResize
FIX: resizing on wide screen on chrome now use the correct coordinates
2021-03-25 18:52:15 +01:00
DESKTOP-FMM8UI0\CLV
8764fe5de5 Popup openWebSite
Add possibility to open a website with a popup
3 cases :
Open page
GoTo Page
OpenCoWebsite
2021-03-25 17:12:53 +01:00
kharhamel
99e6743c01 FIX: resizing on wide screen on chrome now use the correct coordinates 2021-03-25 14:35:51 +01:00
DESKTOP-FMM8UI0\CLV
7140637807 Map tuto version 3 by Jack O 2021-03-25 09:06:41 +01:00
Valdo Romao
f7c4592944 Updated favicons 2021-03-24 23:10:02 +00:00
Kharhamel
dc1a5da175
Merge pull request #837 from thecodingmachine/fixCameraHelpPopup
FIX: help camera settings popup now only show up once
2021-03-24 16:05:21 +01:00
Kharhamel
6f038001de
Merge pull request #836 from thecodingmachine/fixFullScreen
FIX: fixed a bug with fullscreen mode
2021-03-24 16:00:25 +01:00
kharhamel
0b352fc5dc FIX: help camera settings popup now only show up once 2021-03-24 15:59:18 +01:00
kharhamel
43921e3fcc FIX: fixed a bug with fullscreen mode 2021-03-24 15:51:18 +01:00
Kharhamel
1d69af0664
Merge pull request #835 from thecodingmachine/warningMessage
FIX: fixed a error in the validation of receiveGlobalMessagePrompt in pusher/AdminController
2021-03-24 14:37:50 +01:00
kharhamel
f90046459e FIX: fixed a error in the validation of receiveGlobalMessagePrompt in pusher/AdminController 2021-03-24 14:35:20 +01:00
Kharhamel
ec2fa9501c
Merge pull request #813 from thecodingmachine/warningMessage
Warning message
2021-03-24 14:27:13 +01:00
DESKTOP-FMM8UI0\CLV
cb1459de96 remove exitUrl 2021-03-24 11:00:24 +01:00
DESKTOP-FMM8UI0\CLV
7c7916df60 remove useless files and clean code in ScriptTuto.js 2021-03-24 10:58:30 +01:00
kharhamel
8d6c1a50bf FEATURE: warning message when world is near full capacity 2021-03-23 17:44:47 +01:00
DESKTOP-FMM8UI0\CLV
e05c25a857 replace let for const for variables non reassigned 2021-03-23 17:15:22 +01:00
DESKTOP-FMM8UI0\CLV
77e768e5f7 Add map Tuto v2 and scriptTuto.js 2021-03-23 16:00:24 +01:00
DESKTOP-FMM8UI0\CLV
f437b6057c subProject maps/Tuto 2021-03-23 15:58:32 +01:00
Kharhamel
7765775df5
Merge pull request #825 from workadventure-xce/audio_player_improvements
Audio player improvements
2021-03-23 14:07:20 +01:00
Kharhamel
210daf46e3
Merge pull request #832 from thecodingmachine/master
Hotfix from master
2021-03-23 11:11:17 +01:00
David Négrier
979e43bb05
Merge pull request #830 from thecodingmachine/discordbadge
Adding Discord badge to the README
2021-03-23 09:41:40 +01:00
David Négrier
23c33b2971 Adding Discord badge to the README
This should be merged only when the Discord widget mode is enabled on the server (otherwise the number of current users is not displayed)
2021-03-23 09:41:18 +01:00
PizZaKatZe
821f91e996 Finer steps for audio volume 2021-03-22 20:10:27 +01:00
PizZaKatZe
599fdd6ceb Fix group icons and audio attenuation 2021-03-22 20:09:11 +01:00
TabascoEye
e6accd711d Store muted setting of audio player in local storage
This commit was originally authored by @TabascoEye, then rebased and
improved by @pizkaz:

* refactors local user storage, adding audio player settings
* stores "muted" state of audio player in local store
2021-03-22 20:09:11 +01:00
PizZaKatZe
5bd6f49846 Fix (now legacy) 'playAudioLoop' property 2021-03-22 20:09:11 +01:00
PizZaKatZe
fdbcd98a9a Implement audio volume and loop properties 2021-03-22 20:09:11 +01:00
PizZaKatZe
132c6c9ad6 Fix volume auto-reduction in conversations 2021-03-22 20:09:09 +01:00
PizZaKatZe
5a7e67f5df Reflect volume change in audio control 2021-03-22 20:06:55 +01:00
PizZaKatZe
20d3236e73 Fix audio control box appearance 2021-03-22 20:06:55 +01:00
David Négrier
f9a2097bc9
Merge pull request #828 from thecodingmachine/develop
Deploy 2021-03-22
2021-03-22 16:42:28 +01:00
David Négrier
4966789b3b
Merge pull request #663 from shug0/patch-1
Correct the local app url in README
2021-03-22 16:33:03 +01:00
David Négrier
ce0ede7613
Merge pull request #805 from thecodingmachine/dependabot/npm_and_yarn/front/elliptic-6.5.4
Bump elliptic from 6.5.3 to 6.5.4 in /front
2021-03-22 16:31:59 +01:00
David Négrier
6bb757e8b5
Merge pull request #824 from workadventure-xce/fix/front-page-template
Fix/front page template
2021-03-22 16:30:53 +01:00
Kharhamel
04bd60ca26
Merge pull request #827 from workadventure-xce/fix/jitsi_integration
Fix Jitsi integration
2021-03-22 16:27:32 +01:00
David Négrier
9da0acb0d7
Merge pull request #814 from Wikinaut/patch-1
update /etc/hosts readme
2021-03-22 16:12:48 +01:00
DESKTOP-FMM8UI0\CLV
3ef3561b57 no message 2021-03-22 16:10:21 +01:00
DESKTOP-FMM8UI0\CLV
0ffbf8b4b7 Add Final popup to notify that the tuto is finished, some CSS on the popups and clean code 2021-03-22 16:09:04 +01:00
David Négrier
96492e8594
Merge pull request #826 from workadventure-xce/fix/scrollbars
Remove scroll bars
2021-03-22 15:06:23 +01:00
PizZaKatZe
318c63ab90 Fix Jitsi integration
Jitsi iframes are rendered directly in the cowebsite div next to the
cowebsite > main element. This patch fixes the situation.
2021-03-22 11:36:14 +01:00
PizZaKatZe
13fcda7bcf Remove scroll bars 2021-03-21 12:55:14 +01:00
PizZaKatZe
c0bf5755ed front: Fix page template 2021-03-21 11:28:02 +01:00
PizZaKatZe
97ec721c2a front: Fix page template indentation 2021-03-21 11:28:02 +01:00
Kharhamel
519018f6c5
Merge pull request #764 from githubIsNotOpenSourceLOL/patch-1
Use email address from .env
2021-03-19 17:30:12 +01:00
David Négrier
4660b450c5
Merge pull request #700 from thecodingmachine/audioCameraPermission
Input need camera and microphone permission
2021-03-19 17:09:48 +01:00
GRL
e50c8bc354 Suppression of *{...} in every HTML files because the style.ccs file already declare it.
Suppression unused code
2021-03-19 16:21:35 +01:00
GRL
0eb16bce6f Suppression width in Html file 2021-03-19 15:58:02 +01:00
GRL
1cfb22f695 Creation of the HelpCameraSettingsScene
Update of GameManager and index to include the new scene
Change title of helpCameraSettings
Suppression function reset
2021-03-19 15:40:07 +01:00
GRL
0b00055eda Use includes instead of indexOf 2021-03-19 14:40:18 +01:00
GRL
c654f722e3 Add Firefox image
Check permissions in the game
Button Continue to continue without allowing camera and microphone
2021-03-19 12:04:37 +01:00
Gregoire Parant
d68406d5e1 Create input need page 2021-03-19 12:02:42 +01:00
Kharhamel
1f85e548ce
Merge pull request #816 from thecodingmachine/iframeResize
FEATURE: complete control over the iframe size
2021-03-18 16:16:54 +01:00
kharhamel
32fdfaab35 edited CoWebsiteManager to manage vertical resizing 2021-03-18 16:11:22 +01:00
githubIsNotOpenSourceLOL
ec691a75fe
Update .env.template 2021-03-18 13:26:02 +01:00
kharhamel
0701e607fa added sass loader to the project and put the cowebsite style in its own sass file 2021-03-18 12:37:05 +01:00
kharhamel
f9c8b4131c added fullscreen 2021-03-17 18:57:00 +01:00
kharhamel
272be3eba0 improve the visual of the cowebsite 2021-03-17 18:35:19 +01:00
kharhamel
3f6c61633a FEATURE: complete control over the iframe size 2021-03-17 18:34:12 +01:00
Kharhamel
19856c0ee9
Merge pull request #783 from Moini/patch-1
Improve visibility of close button for embedded web pages
2021-03-17 14:35:11 +01:00
David Négrier
4a50729db3
Merge pull request #817 from thecodingmachine/customjitsiurl
Adding the ability to specify a custom Jitsi URL directly in the map
2021-03-16 21:33:35 +01:00
David Négrier
ffb5823b2a Adding the ability to specify a custom Jitsi URL directly in the map
This feature allows to add a "jitsiUrl" property in the map.
As a result, you can use for a given Jitsi room a custom instance of Jitsi.
Using "jitsiUrl" will only work with public Jitsi instances (authentication is not supported when "jitsiUrl" property is provided)

The Jitsi external_api.js script is now lazily loaded.
2021-03-16 20:37:12 +01:00
Wikinaut
d8c74fa838
update /etc/hosts readme 2021-03-15 15:37:51 +01:00
David Négrier
086b88b09a Merge branch 'develop' of github.com:thecodingmachine/workadventure into iframe_api 2021-03-12 18:02:02 +01:00
DESKTOP-FMM8UI0\CLV
662134498c Merge branch 'iframe_api' of https://github.com/thecodingmachine/workadventure into FTUEPopup
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-03-12 17:06:42 +01:00
DESKTOP-FMM8UI0\CLV
c5c8770a60 Add First Version of Tuto
PopUp
Player Control disable
Fake bubble displayed
2021-03-12 16:39:29 +01:00
Kharhamel
18fa1e6153
Merge pull request #807 from thecodingmachine/improvePlayerAnims
FIX: player anims correctly stop on the idle frame
2021-03-11 16:34:20 +01:00
kharhamel
fe8c75610d FIX: player anims correctly stop on the idle frame 2021-03-11 16:21:02 +01:00
DESKTOP-FMM8UI0\CLV
fa4d917729 Resolve conflit with GameScene.ts 2021-03-11 16:03:39 +01:00
DESKTOP-FMM8UI0\CLV
6c21a31004 Update Map Tuto 2021-03-11 15:17:53 +01:00
Gregoire Parant
59c310d0a8 Update to optimize maintainability of the code 2021-03-11 12:17:37 +01:00
DESKTOP-FMM8UI0\CLV
6441fa71d3 Adding placeHolder Popup tuto to Map2
need to cut player controller and simulate bobble
2021-03-11 10:58:48 +01:00
Gregoire Parant
2fcb8a76b1 Merge branch 'master' into develop
# Conflicts:
#	front/src/Connexion/RoomConnection.ts
#	front/src/Phaser/Menu/ReportMenu.ts
2021-03-11 02:22:05 +01:00
grégoire parant
ce6976ec34
Merge pull request #806 from thecodingmachine/hot-fix-moderate-controls
Hot fix moderate controls
2021-03-11 02:13:15 +01:00
Gregoire Parant
2cf99df2da Hot Fix report 2021-03-11 02:03:06 +01:00
Gregoire Parant
46cb9333e6 HotFix message in back 2021-03-11 01:25:36 +01:00
DESKTOP-FMM8UI0\CLV
f9f618094d adding error log if name of square in Tile not matching with the param targetObject of OpenPopup in script.js 2021-03-10 17:22:39 +01:00
dependabot[bot]
d95c71281f
Bump elliptic from 6.5.3 to 6.5.4 in /front
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-10 13:26:46 +00:00
David Négrier
a28fcbb9e6 Catching error when JWT token cannot be generated to avoid crashing Pusher 2021-03-10 09:41:54 +01:00
DESKTOP-FMM8UI0\CLV
8d0411e8a3 can manage position and width/height of a popUp using a square in Tiled 2021-03-10 09:23:45 +01:00
DESKTOP-FMM8UI0\CLV
5e4940dba6 Merge branch 'iframe_api' of https://github.com/thecodingmachine/workadventure into FTUEPopup
* 'iframe_api' of https://github.com/thecodingmachine/workadventure:
  Removing closeOnClick as it is not implemented
  Adding a Popup object with a close() method on it.
2021-03-10 09:00:47 +01:00
DESKTOP-FMM8UI0\CLV
f7f8be24bc Set Position of the popUp with pos of an object in floorLayer object group 2021-03-10 08:57:49 +01:00
David Négrier
7fddcc28f1 Removing closeOnClick as it is not implemented 2021-03-09 18:57:25 +01:00
David Négrier
bb8b222c22 Adding a Popup object with a close() method on it. 2021-03-09 18:51:30 +01:00
David Négrier
18464e4942 Adding button clicked handling 2021-03-09 18:05:07 +01:00
Kharhamel
21cc842c33
Merge pull request #793 from thecodingmachine/adminWorldsLimit
FEATURE: the connexion error an user can get when a world is full is now correctly treated.
2021-03-09 17:45:43 +01:00
DESKTOP-FMM8UI0\CLV
4545de8af1 Merge branch 'iframe_api' of https://github.com/thecodingmachine/workadventure into FTUEPopup
* 'iframe_api' of https://github.com/thecodingmachine/workadventure:
  Adding button clicked handling

# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-03-09 17:12:28 +01:00
DESKTOP-FMM8UI0\CLV
d29e0819f4 Get position of an object in Tile to set popUp Position 2021-03-09 17:07:14 +01:00
kharhamel
8abc34c631 FEATURE: the connexion error an user can get when a world is full is now correctly traited. Also remove a redundant adminApi call 2021-03-09 16:34:19 +01:00
David Négrier
1e002f93ed Implementation of openPopup script method (WIP) 2021-03-09 16:21:14 +01:00
DESKTOP-FMM8UI0\CLV
70898a2f28 Merge branch 'iframe_api' of https://github.com/thecodingmachine/workadventure into FTUEPopup
* 'iframe_api' of https://github.com/thecodingmachine/workadventure:
  Implementation of openPopup script method (WIP)
  Adding the abaility to track users entering/leaving a zone in the script language.
  Adding the ability to register a single script using the "script" attribute at the map property level.
  Improving security: only iframes opened with "openWebsiteAllowApi" property are now able to send/receive messages.
  Adding ability to listen to user types chat messages using WA.onChatMessage
  Adding strong checks on messages exchanged using generic-type-guard
  Fixing eslint
  Adding an API for inter-iframe communication
2021-03-09 15:46:22 +01:00
David Négrier
ed2ce68f37 Merge branch 'FTUEPopup' of github.com:ClementVieilly75/workadventure into iframe_api
# Conflicts:
#	front/dist/.gitignore
#	front/src/Phaser/Game/GameScene.ts
2021-03-09 15:35:51 +01:00
DESKTOP-FMM8UI0\CLV
bbf5003e16 move font press start 2P from index.html to style.css 2021-03-09 14:21:11 +01:00
DESKTOP-FMM8UI0\CLV
b175b7164d Merge branch 'develop' of https://github.com/thecodingmachine/workadventure into FTUEPopup
* 'develop' of https://github.com/thecodingmachine/workadventure:
  Trying to enable back connection on admin from develop, knowing that the develop certificate is broken. Fixing priority.
  Trying to enable back connection on admin from develop, knowing that the develop certificate is broken
  Revert "Adding back admin in develop branch CI"
  Adding back admin in develop branch CI
  Fixing GA tag not included in play domain
  FEATURE: better implementation of the admin global message
  Fix ci
  Update private access
  Allow URLs relative to map base in iframe / openWebsite

# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-03-09 13:57:05 +01:00
DESKTOP-FMM8UI0\CLV
afac042706 supp debug log 2021-03-09 13:53:46 +01:00
David Négrier
f3c67a94ee Trying to enable back connection on admin from develop, knowing that the develop certificate is broken. Fixing priority. 2021-03-09 09:12:55 +01:00
David Négrier
2bef328d8a Adding the abaility to track users entering/leaving a zone in the script language. 2021-03-08 18:58:38 +01:00
David Négrier
1a4c7ad928 Trying to enable back connection on admin from develop, knowing that the develop certificate is broken 2021-03-08 10:58:57 +01:00
DESKTOP-FMM8UI0\CLV
858bf0b384 Adding property tile "inGameConsoleMessage", open a popup when user walk on a tile with this property
Adding map "Tuto2", the FTUE map
2021-03-08 09:28:15 +01:00
David Négrier
6fbf165c91 Adding the ability to register a single script using the "script" attribute at the map property level. 2021-03-07 21:02:38 +01:00
David Négrier
7d67f55012 Improving security: only iframes opened with "openWebsiteAllowApi" property are now able to send/receive messages. 2021-03-06 16:00:07 +01:00
David Négrier
e927e0fa16 Adding ability to listen to user types chat messages using WA.onChatMessage 2021-03-06 15:26:07 +01:00
David Négrier
80df1ffb5f Revert "Adding back admin in develop branch CI"
This reverts commit c384a73edf.
2021-03-05 17:45:16 +01:00
David Négrier
c384a73edf Adding back admin in develop branch CI 2021-03-05 16:52:54 +01:00
David Négrier
5178dff108 Adding strong checks on messages exchanged using generic-type-guard 2021-03-05 16:50:54 +01:00
David Négrier
83fa23a82d Fixing eslint 2021-03-05 11:47:04 +01:00
David Négrier
99ab99d893
Merge pull request #792 from thecodingmachine/gafix
Fixing GA tag not included in play domain
2021-03-05 10:52:16 +01:00
David Négrier
15405633d1 Fixing GA tag not included in play domain
The GA tag was not properly included because the index.html file that contained it was overwritten by Webpack's HtmlWebpackPlugin.
2021-03-05 10:00:11 +01:00
David Négrier
eb93a04341 Adding an API for inter-iframe communication
Adds a first version of an API to communicate between an iFrame opened by WorkAdventure and WorkAdventure itself.
The first API method is a method allowing to add messages in the chat, from the iFrame.

Comes with a test file.
2021-03-04 19:00:00 +01:00
David Négrier
bf8e8bf777
Merge pull request #689 from znerol-forks/feature/cowebsite-load-map-relative-url
Allow URLs relative to map base in iframe / openWebsite
2021-03-04 18:21:48 +01:00
Kharhamel
5833629469
Merge pull request #784 from thecodingmachine/betterGlobalMessage
FEATURE: better implementation of the admin global message
2021-03-04 18:10:52 +01:00
kharhamel
ad7e16c33b FEATURE: better implementation of the admin global message 2021-03-04 16:18:06 +01:00
grégoire parant
df610aa01b
Merge pull request #785 from thecodingmachine/updatePrivateAccess
Update private access
2021-03-02 14:35:39 +01:00
Gregoire Parant
915d945dd5 Fix ci 2021-03-01 22:32:50 +01:00
Gregoire Parant
30f4793342 Update private access 2021-03-01 22:21:52 +01:00
David Négrier
e0540790e1 Translating button 2021-03-01 14:36:18 +01:00
Moini
95da470a89
Improve visibility of close button for embedded web pages
The button (a white x) wasn't visible on white background. Now it is. Also is a little bit larger and changes color on hover.
2021-03-01 14:08:56 +01:00
David Négrier
48c13119bd
Merge pull request #776 from s00500/fix_report_menu
Fix report userId in report menu
2021-02-27 23:16:23 +01:00
Lukas Bachschwell
2772d72eba
Fix report userId in report menu
Signed-off-by: Lukas Bachschwell <lukas@lbsfilm.at>
2021-02-24 21:32:16 +01:00
githubIsNotOpenSourceLOL
6e6b607226
Use email address from .env 2021-02-19 23:10:48 +01:00
David Négrier
6e9c715980
Merge pull request #739 from t10r/fix/multi-user-videochat-mode
fix multi user videochat mode
2021-02-19 14:54:38 +01:00
David Négrier
3eec41a1d0
Merge pull request #762 from thecodingmachine/develop
Deploy 2021-02-18
2021-02-18 20:10:55 +01:00
David Négrier
6f06b92395
Merge pull request #760 from thecodingmachine/turncredentials
Fixing screensharing Coturn credentials
2021-02-18 14:09:33 +01:00
David Négrier
13a20a0ef0 Fixing screensharing Coturn credentials
When screensharing is initiated by the user, we previously did not send the correct Coturn credentials.
We now send the last credentials received from the Video stream.
2021-02-18 11:52:30 +01:00
grégoire parant
b5514e6e48
Merge pull request #759 from thecodingmachine/jitsiConfig
Fix last properties changed after trigger change position
2021-02-18 11:37:41 +01:00
Gregoire Parant
772c3174be Fix last properties changed after trigger change position 2021-02-18 11:32:37 +01:00
grégoire parant
3a1b2490ef
Merge pull request #758 from thecodingmachine/jitsiConfig
Jitsi config
2021-02-18 10:12:16 +01:00
Gregoire Parant
80449e9a96 Change json map test 2021-02-18 10:00:13 +01:00
Gregoire Parant
8a2954eab9 Fix new conf feature 2021-02-18 09:38:27 +01:00
grégoire parant
13078489c6
Merge pull request #757 from thecodingmachine/jitsiConfig
Merge Jitsi config
2021-02-17 20:34:31 +01:00
Gregoire Parant
5ddf909fe6 Remove unless export constante 2021-02-17 20:26:33 +01:00
grégoire parant
c3286e61cf
Merge pull request #655 from thecodingmachine/exitTriggerAction
Message trigger action
2021-02-17 19:47:46 +01:00
Gregoire Parant
fff0cbc3f6 Revert message exit 2021-02-17 19:40:00 +01:00
Gregoire Parant
9b7b3eb140 Update feedback @tabascoeye 2021-02-17 19:31:05 +01:00
Gregoire Parant
ce423c9fec Remove exit trigger action 2021-02-17 19:29:59 +01:00
Gregoire Parant
83fc7d0cc0 Merge branch 'develop' into exitTriggerAction
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2021-02-17 19:28:41 +01:00
Gregoire Parant
baae1e8125 Update to restore previous config 2021-02-17 19:21:37 +01:00
Gregoire Parant
e8b1b286a3 Merge Jitsi config 2021-02-17 18:49:55 +01:00
David Négrier
36a713ec91
Merge pull request #754 from thecodingmachine/develop
Deploy 2021-02-16
2021-02-16 20:28:39 +01:00
David Négrier
ae1d00c828
Merge pull request #736 from MisterErwin/patch-1
Fix offsets of SpeechBubble.ts
2021-02-16 20:02:03 +01:00
David Négrier
43b48ce555
Merge pull request #737 from MisterErwin/patch-2
Do not change rooms if scene failed to load
2021-02-16 20:01:00 +01:00
David Négrier
ddcb5ede59
Merge pull request #742 from znerol-forks/fix/huge-jitsi-url
Fix jitsi URLs growing indefinitely in length
2021-02-16 19:52:56 +01:00
David Négrier
9affa36608
Merge pull request #746 from thecodingmachine/turncredentials
[Feature] Connect to a Coturn server using REST API
2021-02-16 19:32:21 +01:00
Kharhamel
f00d07289c
Merge pull request #753 from thecodingmachine/fixJitsiConfig
FIX: current audio and video status are overwriten by jitsi config
2021-02-16 19:02:52 +01:00
kharhamel
e21868ed3b FIX: current audio and video status are overwriten by jitsi config 2021-02-16 18:25:23 +01:00
David Négrier
6b00355ea8 Fixing WebRtc user name / password when using TURN REST API 2021-02-16 18:13:30 +01:00
David Négrier
7fb923f823 Fixing deploy with new TURN_STATIC_AUTH_SECRET secret 2021-02-16 11:34:12 +01:00
David Négrier
12ef2820bf Refactoring parameters passed to ScreenSharingPeer 2021-02-16 11:08:03 +01:00
David Négrier
cdb3cfdc81 [Feature] Connect to a Coturn server using REST API
This allows connecting to a TURN server with temporary passwords.
The passwords are expiring after 4 hours.
2021-02-16 11:06:05 +01:00
znerol
9670f92a08 Allow URLs relative to map base in iframe / openWebsite 2021-02-16 10:53:50 +01:00
David Négrier
e07efbdf28
Merge pull request #698 from thecodingmachine/fix/deploy-cleanup
Adding docker-compose.prod.yaml to ease deployment
2021-02-16 10:35:18 +01:00
David Négrier
f5610261c0 Fixing deploy URL in Github message 2021-02-16 10:28:00 +01:00
David Négrier
b9c839a87d Adding link to the docker-compose prod file in README. 2021-02-16 10:24:51 +01:00
znerol
4fcdad1551 Fix jitsi URLs growing indefinitely in length 2021-02-15 10:36:56 +01:00
Tim Schlüter
05b829da70 fix multi user videochat mode 2021-02-13 21:19:45 +01:00
MisterErwin
aff4c8d145
Do not change rooms if scene failed to load
Sometimes a following room fails to load (e.g., #582) and instead of fading to black (as no scene is active) when trying to enter that next room, the player will stay in the old room and an error is logged (as throwing one crashes the game).
2021-02-13 14:15:09 +01:00
MisterErwin
511cd99e22
Fix offsets of SpeechBubble.ts
Since some recent optimizations, they are being added on top of the player, which makes the offset redundant.
2021-02-13 14:04:28 +01:00
Kharhamel
cfcad07487
Merge pull request #603 from thecodingmachine/localBlackList
FEATURE: implemented a client side blacklist
2021-02-12 19:23:56 +01:00
kharhamel
0c892e0243 FEATURE: implemented a client side blacklist 2021-02-12 19:15:24 +01:00
grégoire parant
f917420ca7
Merge pull request #731 from thecodingmachine/develop
Deploy 2021-02-11 (3)
2021-02-11 21:56:08 +01:00
Gregoire Parant
b92b7304b0 Fix to use clear All Keys 2021-02-11 21:48:24 +01:00
David Négrier
0e8be106e5
Merge pull request #729 from thecodingmachine/develop
Deploy 2021-02-11 (2)
2021-02-11 18:09:56 +01:00
David Négrier
64cd07cc39
Merge pull request #726 from thecodingmachine/fixHtmlAnchorElement
Update to use Anchor type
2021-02-11 18:08:52 +01:00
David Négrier
bc35ade8df Improving urlify 2021-02-11 18:03:14 +01:00
David Négrier
3eb4d7bb1e
Merge pull request #728 from thecodingmachine/develop
Deploy 2021-02-11
2021-02-11 17:27:32 +01:00
David Négrier
c8fc8a2834
Merge pull request #699 from thecodingmachine/pixelartmode
Switching Phaser to pixelart mode
2021-02-11 17:20:20 +01:00
David Négrier
a4bddbf4fc
Merge pull request #720 from h42i/fix/metrics
Fix workadventure_nb_clients_per_room in pusher
2021-02-11 17:18:50 +01:00
David Négrier
42aee9f5c8
Merge pull request #722 from thecodingmachine/jitsislugify
Slugifies the Jitsi room name
2021-02-11 17:17:58 +01:00
David Négrier
35fdd3bf29
Merge pull request #717 from kalkspace/add-stun-server-env-variable-with-fallback
Add STUN_SERVER env variable with fallback
2021-02-11 17:17:36 +01:00
Gregoire Parant
c5916e7b6d Fix ci 2021-02-11 15:06:12 +01:00
Gregoire Parant
0d104cb307 Update to use Anchor html 2021-02-11 14:49:32 +01:00
David Négrier
91fddd6893 Slugifies the Jitsi room name
This will avoid Jitsi breaking on unexpected characters and displaying a HTTP 404 error.
2021-02-10 13:51:17 +01:00
David Négrier
f6e93da48a Fixing loading logo being displayed when nothing was loaded 2021-02-10 12:08:16 +01:00
David Négrier
8389fad877 Disabling video background by default on Jitsi
(because it consumes a lot of CPU)
2021-02-10 11:20:05 +01:00
David Négrier
e7ddeedb3e Disabling Join/Leave notifications by default 2021-02-10 11:13:47 +01:00
David Négrier
f8b5ca04e5 Adding a test map for Jitsi meet special properties 2021-02-10 11:09:22 +01:00
David Négrier
a5bdf68246 Moving property reading inside startJitsi (startJitsi is called at 2 different places) 2021-02-10 11:08:57 +01:00
PizZaKatZe
d7b0cb83de Fix workadventure_nb_clients_per_room in pusher 2021-02-10 00:03:42 +01:00
Mickael Chimansky
5cb9624b0b fixup! Jitsi config properties 2021-02-09 20:31:49 +01:00
David Négrier
f98b107bb7
Merge pull request #716 from thecodingmachine/loaderfix
Fixing loading logo being displayed when nothing was loaded
2021-02-09 19:00:41 +01:00
Mickael Chimansky
9c4d0aa32f Jitsi config properties 2021-02-09 16:05:21 +01:00
Sebastian Wiesendahl
b6807d274b Add STUN_SERVER env variable with fallback
default: "stun:stun.l.google.com:19302"

Make STUN_SERVER available for app config

Change also the STUN_SERVER for ScreenSharingPeer
2021-02-09 13:09:17 +01:00
David Négrier
969c9fd544 Fixing loading logo being displayed when nothing was loaded 2021-02-09 12:41:35 +01:00
David Négrier
10e4f515b3
Merge pull request #704 from thecodingmachine/develop
Deploy 2021-02-04
2021-02-04 16:16:27 +01:00
David Négrier
adb535d1b6
Merge pull request #703 from thecodingmachine/socialNetworkLink
Social network link anonymous connexion
2021-02-04 16:10:25 +01:00
Gregoire Parant
03f1f5bf75 Update feedback @moufmouf 2021-02-04 16:05:05 +01:00
grégoire parant
b0c49478cd
Merge pull request #702 from thecodingmachine/fixMenuDiscussion
Fix icon discussion
2021-02-03 23:14:47 +01:00
Gregoire Parant
59b4b168e9 Social network link anonymous connexion
In menu, add social newtork link when user is connected in anonymous mode
2021-02-03 23:14:31 +01:00
Gregoire Parant
4de9b8ba40 Fix icon discussion
- Fix size of discussion icon
- Update x and y when page is resize
- Fix blanc link in chat
2021-02-03 23:11:33 +01:00
grégoire parant
c41c058fb0
Merge pull request #527 from oliverlorenz/feature/iframe-feature-policy
feat: adds property openWebsitePolicy property to set "allow" property in iframe
2021-02-03 17:38:35 +01:00
David Négrier
9c9f046b16
Merge pull request #668 from piitaya/fix_game_not_centered
Use canvas instead of div container for calculating the game size
2021-02-03 14:06:09 +01:00
David Négrier
246174c365 Removing useless file 2021-02-03 12:29:56 +01:00
David Négrier
4efa308473 Moving docker-compose prod file to contrib/docker 2021-02-03 12:29:41 +01:00
grégoire parant
f2b9f6c92a
Merge pull request #686 from thecodingmachine/publicReportedUser
Permit puiblic report
2021-02-02 18:09:25 +01:00
David Négrier
8572959cb0
Merge pull request #690 from thecodingmachine/newLogo
Update Loading page
2021-02-02 17:26:48 +01:00
David Négrier
3f274df813 Redesigning loading bar 2021-02-02 17:17:00 +01:00
David Négrier
6665317f63
Merge pull request #696 from mstock/cowebsite-background-color
Improve display of websites not specifying background color
2021-02-02 12:07:34 +01:00
David Négrier
e757d63924 Switching Phaser to pixelart mode
To be honest, I'm not sure what it does exactly (it is supposed to prevent antialiasing and it is rounding coordinates for rendering sprites, but I don't see a difference yet.
2021-02-02 12:04:50 +01:00
David Négrier
cc53023586 Using locally built images 2021-02-02 11:34:29 +01:00
David Négrier
274f5eba4c Reworking docker-compose.prod.yaml to make it generic while still having a front container configurable 2021-02-02 11:19:24 +01:00
Manfred Stock
0afbb5412e Improve display of websites not specifying background color
The `index.html` of the front-end specifies `#000` as background color,
however, it seems like various websites found 'in the wild' don't
specify their own background color and thus default to `transparent`. As
a result of this, they tend to become mostly unreadable when displayed
using `openWebsite` since they often assume that they get displayed on a
white background. Setting white as background color on the container
element of the `<iframe>` works around this issue.
2021-02-01 22:48:10 +01:00
Gregoire Parant
788e22e8b0 Fix loading logo of WorkAdventure 2021-02-01 16:52:28 +01:00
David Négrier
686427f6fe Merge branch 'develop' of github.com:thecodingmachine/workadventure into fix/deploy-cleanup
# Conflicts:
#	front/Dockerfile
2021-02-01 14:00:07 +01:00
David Négrier
cc1e3bbe0e
Merge pull request #692 from thecodingmachine/develop
Deploy 2021-02-01
2021-02-01 07:16:18 +01:00
Gregoire Parant
f99db4856f Add WorkAdventure logo 2021-01-30 20:33:31 +01:00
Gregoire Parant
ac2bc76239 change style report button 2021-01-30 14:08:11 +01:00
TabascoEye
58b7d85bf3
bugfix and linting
* use 'const' on constraints which never change
* also re-enable constraints ater mic was re-enabled (after mute/unmute)
2021-01-30 02:24:36 +01:00
TabascoEye
31a0d08c76
disable automatic gain control on microphone
AGC really makes the soundqulity way worse than it could be.
Especially since it is so noticeable when entering a Jitsi where AGC is disabled (and suddenly some people sound much better).

In the long run, this should probably be configurable. On the other hand the setting changes the audio _going out_ from a user, so it might be hard for him to judge which settings are a good or a bad idea…
2021-01-30 02:13:03 +01:00
Malte Riechmann
69ff15ff71
Run containers in the background using detached mode 2021-01-29 21:45:01 +01:00
Gregoire Parant
7eb38fae83 Permit puiblic report
- Create report html
 - Add report flag
2021-01-29 21:09:10 +01:00
David Négrier
3a046cb450 Removing admin from develop branch because of issue with SSL certificate 2021-01-28 23:18:12 +01:00
David Négrier
2f01677849
Merge pull request #681 from thecodingmachine/downgradephaser3.24
Downgraded phaser version to 3.24.1
2021-01-28 23:08:47 +01:00
kharhamel
f2c3d6f158 downgraded phaser version to 3.24.1 2021-01-28 23:03:06 +01:00
David Négrier
8d8d0cb1b7
Merge pull request #680 from thecodingmachine/revert-677-phaserDowngrade
Revert "downgraded phaser version to 3.22"
2021-01-28 22:45:45 +01:00
David Négrier
ce56a5cba1
Revert "downgraded phaser version to 3.22" 2021-01-28 22:38:20 +01:00
David Négrier
755fc44dd9
Merge pull request #677 from thecodingmachine/phaserDowngrade
downgraded phaser version to 3.22
2021-01-28 22:31:46 +01:00
Paul Bottein
a8b5e8599f use HTMLCanvasElement 2021-01-28 21:09:41 +01:00
Paul Bottein
608a9ad347 use type guard 2021-01-28 21:07:17 +01:00
Paul Bottein
b52c546a8c Use canvas instead of div container for calculating the game size 2021-01-28 21:04:43 +01:00
kharhamel
e7120317c1 downgraded phaser version to 3.22 2021-01-28 19:15:34 +01:00
David Négrier
b7b2934106
Merge pull request #672 from Amirault/tam_use_type_guard_on_html_element
Use type guard for html element subtype
2021-01-28 17:13:02 +01:00
Tony Amirault
72799d4f0e added end of line 2021-01-28 15:31:09 +01:00
Tony Amirault
3a05ef6640 package.lock removed 2021-01-28 15:30:20 +01:00
Kharhamel
9849e70613
Merge pull request #670 from thecodingmachine/httpCypress
Removed cypress from the project
2021-01-28 15:03:12 +01:00
kharhamel
ca231eee4a remove cypress from the project :( 2021-01-28 14:56:24 +01:00
Kharhamel
a6a66c7789
Merge pull request #666 from thecodingmachine/disablepipeline
Removing pipeline related code
2021-01-28 14:53:33 +01:00
Tony Amirault
cdbae5fa43 use type guard on html element 2021-01-27 18:33:40 +01:00
David Négrier
8eebed1829 Removing pipeline related code
This code is broken since Phaser 3.50 and we are facing weird issues with MacOS memory leaks and crashes.
Removing this code will remove one potential suspect.
2021-01-27 11:18:07 +01:00
Thomas Alberola
5cd982f114
core(Readme) : Fix App url after installation 2021-01-26 17:19:32 +01:00
grégoire parant
86f1099247
Merge pull request #648 from thecodingmachine/customCharacterLadyLoading
Fix custom character lazy loading
2021-01-26 15:27:46 +01:00
Gregoire Parant
45b355f780 Refactor lazy loading 2021-01-26 15:21:23 +01:00
Kharhamel
556d5a4695
Merge pull request #658 from thecodingmachine/lockUserBanned
Lock user banned
2021-01-26 14:06:35 +01:00
Gregoire Parant
1dd2858424 Fix feadback @Kharhamel 2021-01-26 14:04:42 +01:00
Gregoire Parant
e2695c58af Verify existing texture 2021-01-26 09:16:39 +01:00
Gregoire Parant
803be36def Merge branch 'develop' into customCharacterLadyLoading 2021-01-26 09:02:17 +01:00
Gregoire Parant
c6903cc4c5 Use Error scene and add banned message 2021-01-26 08:57:10 +01:00
David Négrier
6432d2459b
Merge pull request #659 from thecodingmachine/develop
Deploy 2020-01-25
2021-01-25 22:55:12 +01:00
David Négrier
ab0fe63cb2 Adding start room url to develop env 2021-01-25 22:42:44 +01:00
David Négrier
a4cb39eef3
Merge pull request #653 from thecodingmachine/maccrash
Add a parameter to allow changing phaser renderer
2021-01-25 16:52:15 +01:00
Gregoire Parant
8de05c39c1 Lock user when he was banned 2021-01-25 14:10:16 +01:00
Gregoire Parant
beb53df364 Error problem open new map 2021-01-25 13:18:57 +01:00
Gregoire Parant
5f88a1a0b9 Exit trigger action
- [x] Add trigger message custom
- [x] Add trigger for exit map
- [x] Update documentation
2021-01-25 12:21:40 +01:00
David Négrier
c2c8680dae Fix linting 2021-01-25 12:02:00 +01:00
David Négrier
8609cda0d0 Add a parameter to allow changing phaser renderer
Recently, some Macs have been crashing running WorkAdventure.
Hard to say if this is related to Phaser 3.50 upgrade or to the new MacOS version.

It happens mostly on Mac Air and might be related to WebGL rendering.

This commit allows to switch to CANVAS renderer by adding `?phaserMode=canvas` in the URL
2021-01-25 11:18:48 +01:00
Kharhamel
18fb508828
Merge pull request #639 from thecodingmachine/betterLink
changed the color of the chat links and unit test
2021-01-25 10:42:32 +01:00
Kharhamel
39194b5531
Merge pull request #642 from tabascoeye/patch-1
cleanup when closing the scene
2021-01-25 10:35:01 +01:00
Kharhamel
d32fca9777
Merge pull request #597 from psy/feature_streams
add remote files and streams to playAudio
2021-01-25 10:33:43 +01:00
Gregoire Parant
232ac6d5d1 Error lazy loading
Update loader custom characters
2021-01-24 18:00:30 +01:00
Gregoire Parant
0133609770 clean 2021-01-24 16:06:52 +01:00
Gregoire Parant
75d8d46c62 clean 2021-01-24 16:02:10 +01:00
Gregoire Parant
d93a8da828 Fix custom character lazy loading 2021-01-24 15:57:47 +01:00
TabascoEye
39b433eef5
Update GameScene.ts
stop all the map specific stuff (Jitsi, coWebsite, Audio) when leaving the scene
Fixes #633
2021-01-23 01:16:13 +01:00
kharhamel
4ad7f4d5a3 changed the color of the chat links and unit test 2021-01-22 15:06:41 +01:00
David Négrier
3d84a9c8cd Turning French 'Moi' into English 'Me' 2021-01-21 10:16:08 +01:00
David Négrier
de7bf08de1
Merge pull request #632 from thecodingmachine/feat/url-room-started
Removed hard coded default map (2)
2021-01-21 10:10:22 +01:00
David Négrier
bbf9325396 Simplifying code and making START_ROOM_URL compatible with public (_) and private (@) paths 2021-01-21 09:40:11 +01:00
David Négrier
c568f32ff1
Merge pull request #631 from thecodingmachine/fixdockerstartup
Fixing docker-compose startup
2021-01-21 09:08:53 +01:00
David Négrier
ae48284460 Fixing docker-compose startup
With the addition of ./template.sh in #623, we now need to call the templater on each container startup, even in development environments.
2021-01-21 09:02:47 +01:00
Thomas Basler
d79a18ee81 Removed unused URL_ROOM_STARTED variable from pusher and back 2021-01-20 22:56:24 +01:00
Thomas Basler
14b328c733 Removed hard coded default map
You can apply local maps using the maps vhost as previously.
But it's also possible to specify external maps by prepending http or https.
2021-01-20 22:56:21 +01:00
David Négrier
84f85effe5
Merge pull request #628 from thecodingmachine/template-analytics
Template google analytics data (2)
2021-01-20 18:03:28 +01:00
David Négrier
f87f3889df Running templater in CI phase 2021-01-20 18:00:11 +01:00
David Négrier
9e469a4a8f Removing Google Analytics tracking from test environments 2021-01-20 17:30:26 +01:00
David Négrier
15b3e87bd1 Renaming TRACKING_NUMBER to GA_TRACKING_ID 2021-01-20 17:30:11 +01:00
David Négrier
fd89d54ed9 Adding GA tracking in test envs 2021-01-20 16:57:30 +01:00
David Négrier
aa9a21ad4c
Merge pull request #581 from Informatic/fix/firefox-webcam
front: fix webrtc webcam feed on Firefox
2021-01-20 16:27:45 +01:00
David Négrier
b03abee481 Fixing admin links 2021-01-20 10:34:34 +01:00
David Négrier
2452c96bf1
Merge pull request #620 from thecodingmachine/develop
Deploy 2021-01-18
2021-01-19 21:49:45 +01:00
grégoire parant
cb7cf7a141
Merge pull request #625 from thecodingmachine/phaser3.54
FEATURE: updated phaser to version 3.52
2021-01-19 18:51:03 +01:00
kharhamel
49531bb8fa FEATURE: updated phaser to version 3.52 2021-01-19 18:31:58 +01:00
Jean-Philippe Evrard
e2f400472f Template google analytics data
Without this patch, the index.html contains google analytics at
all times, including for people self-hosting it.

This is a problem for privacy reasons, and only people wanting
to have analytics on their instances should be able to enable
them.

This fixes it by making sure the index.html page is templated
to sideload content from ANALYTICS_CODE_PATH (which itself is
also templated, for convenience).
2021-01-19 12:17:05 +01:00
Gregoire Parant
c95419f0e7 Prepar release 1.1.0
Automatically redirect on floor0 of TCM map
2021-01-18 22:52:25 +01:00
David Négrier
d891a288b5 Switching to new admin url 2021-01-18 21:02:25 +01:00
David Négrier
1f9d975505 Fixing CI 2021-01-18 19:52:44 +01:00
David Négrier
db1e700488
Merge pull request #618 from thecodingmachine/featureBan
Removing website container entirely from project
2021-01-18 19:49:21 +01:00
David Négrier
675c043cb5 Removing website container entirely from project (as it is specific to the WorkAdventure company and not to the WorkAdventure self-installed project) 2021-01-18 19:39:22 +01:00
David Négrier
c466ba8ca5
Merge pull request #601 from thecodingmachine/featureBan
Create ban feature by admin console
2021-01-18 19:31:51 +01:00
David Négrier
4df200c6c0 Switching ban by IP to be world specific 2021-01-18 16:41:36 +01:00
Gregoire Parant
5954ded195 Update link for private TCM map 2021-01-18 16:25:44 +01:00
David Négrier
0d4808231a Linting code 2021-01-18 15:43:27 +01:00
David Négrier
65d2c3dfb0 Disabling explicit any check on error handling 2021-01-18 15:36:02 +01:00
David Négrier
e0fcb38c4f Fixing CI pipeline 2021-01-18 15:34:22 +01:00
David Négrier
8fcc1534d8 Fixing let/const in Admin 2021-01-18 15:31:19 +01:00
David Négrier
217b04dafa Adding pusher CI 2021-01-18 15:31:07 +01:00
David Négrier
d1222e4440 Refactoring admin messages 2021-01-18 15:07:40 +01:00
grégoire parant
ddb7e2a12b
Merge pull request #614 from thecodingmachine/fixFocusCamScene
Fix focus cam on select cam scene
2021-01-18 10:52:28 +01:00
Gregoire Parant
679dbd4215 Fix focus cam on select cam scene 2021-01-18 10:40:13 +01:00
David Négrier
b1d4af005e Adding missing use statement 2021-01-17 22:44:22 +01:00
David Négrier
4234b38910 Better error message in case of 404 2021-01-17 22:40:54 +01:00
David Négrier
48c3f951bf Correctly forwarding HTTP error status code from admin to front 2021-01-17 20:42:45 +01:00
David Négrier
a5aa9b6cf9 /map now returns the correct error status code 2021-01-17 20:42:45 +01:00
David Négrier
adca51f6de Replacing FourOFourScene with more generic ErrorScene 2021-01-17 20:42:45 +01:00
Gregoire Parant
0bbaef0cb5 Fix send message and ban message 2021-01-17 03:07:46 +01:00
Gregoire Parant
74d0594246 Fix feedback @moufmou 2021-01-16 20:14:21 +01:00
Gregoire Parant
a7398fa851 Fix ci 2021-01-15 05:12:23 +01:00
Gregoire Parant
b1f8522c05 Create ban feature by admin console 2021-01-15 03:19:58 +01:00
Gregoire Parant
8c9e9522db Revert "Update ban feature"
This reverts commit d2ee52ce43.
2021-01-15 03:15:14 +01:00
Gregoire Parant
d2ee52ce43 Update ban feature 2021-01-15 03:14:15 +01:00
David Négrier
92246df8b6
Merge pull request #598 from thecodingmachine/develop
master
2021-01-14 18:01:18 +01:00
Kharhamel
871ee6b192
Merge pull request #596 from thecodingmachine/fixLazyLoadCrash
fixed a crash linked to incorrect textureDescriptors
2021-01-14 15:14:25 +01:00
kharhamel
fd29826556 fixed a crash linked to incorrect textureDescriptors 2021-01-14 14:47:02 +01:00
psy
8d67947bc1 move map url to else case 2021-01-14 11:48:06 +01:00
psy
f431e769cc add remote files and streams to playAudio 2021-01-14 11:45:14 +01:00
David Négrier
16205bc4c8
Merge pull request #593 from thecodingmachine/develop
Deploy 2020-01-13
2021-01-13 19:06:28 +01:00
David Négrier
842eadeb59
Merge pull request #592 from thecodingmachine/fixpipelinenowebgl
Fixing bug when no WebGL is available
2021-01-13 18:45:16 +01:00
David Négrier
8cf481ec49 Fixing bug when no WebGL is available
The switch to Phaser 3.50 introduced a bug when WebGL is not available in a browser.
The changes in this commit prevent calls to the WebGL pipeline if the pipeline is not available.
2021-01-13 18:39:28 +01:00
grégoire parant
8ffba3157a
Merge pull request #588 from thecodingmachine/customiseCharacters
Customise characters with admin console
2021-01-13 16:47:13 +01:00
Gregoire Parant
512be7acd2 New basic characters 2021-01-13 16:46:24 +01:00
Piotr Dobrowolski
33b9bd773f *: Dockerfiles cleanup, docker-compose.prod.yaml
New docker-compose.prod.yaml should provide a production-ish deployment
of WorkAdventure
2021-01-12 22:32:37 +01:00
grégoire parant
cd5d7cb826
Merge pull request #590 from thecodingmachine/fixMenu
Fix menu
2021-01-12 19:56:47 +01:00
Gregoire Parant
993c58cf8e Fix select rectangle for customize scene 2021-01-12 19:49:48 +01:00
Gregoire Parant
987c80c9c4 Fix menu 2021-01-12 19:48:48 +01:00
grégoire parant
0f7f42b6f1
Merge pull request #566 from thecodingmachine/screanSharing
Fix screen sharing
2021-01-12 19:24:06 +01:00
Gregoire Parant
123ee4bc43 Fix responsive and limite select cursor 2021-01-12 15:29:26 +01:00
David Négrier
449077899b
Merge pull request #563 from thecodingmachine/dependabot/npm_and_yarn/pusher/systeminformation-4.31.1
Bump systeminformation from 4.30.5 to 4.31.1 in /pusher
2021-01-12 14:53:29 +01:00
Gregoire Parant
f8d4b696e8 Customise characters with admin console
- Add new characters choise
 - Display on 3 line of 6 pers
 - Add custom characters from admin console wilth level -1
2021-01-12 13:19:51 +01:00
grégoire parant
648e6aef97
Merge pull request #561 from thecodingmachine/linkNotClickable
Verify URL in message
2021-01-12 11:30:11 +01:00
Kharhamel
4edf71d0c8
Merge pull request #573 from thecodingmachine/lazyloading
All player textures are now lazy-loaded
2021-01-12 10:48:42 +01:00
David Négrier
fc50a64301
Merge pull request #579 from thecodingmachine/develop
merge develop into master 8/01/2021
2021-01-11 23:45:12 +01:00
Piotr Dobrowolski
7f8cc76eb7 front: fix webrtc webcam feed on Firefox
Seems like Firefox doesn't support specifing both exact and ideal
constraints...
2021-01-10 17:05:48 +01:00
kharhamel
472fbb1de0 All player textures are now lazy-loaded 2021-01-08 11:44:41 +01:00
Piotr Dobrowolski
3c099ea783 back,pusher,uploader: cleanup dependencies
Move typescript/ts-node-dev to dev dependencies, remove unused
dependencies.
2021-01-07 19:09:53 +01:00
Piotr Dobrowolski
af260ad229 front: add AnimatedTiles plugin 2021-01-07 18:37:57 +01:00
Kharhamel
c2d0cda441
Merge pull request #572 from thecodingmachine/master
Master
2021-01-07 14:00:45 +01:00
Kharhamel
186114a4e2
Merge pull request #562 from thecodingmachine/phaser35
updated phaser to version 3.51 and fixed the BC breaks
2021-01-07 13:57:08 +01:00
Gregoire Parant
e8f1b2d048 Add clear array peer connection sharing 2021-01-07 12:58:45 +01:00
kharhamel
3ce8427378 fixed a game crashed because of lack of animations and improved the character class 2021-01-07 12:46:13 +01:00
Gregoire Parant
a88ad3cf4d Dont delete PeerSharingConnection because it will be resuse
When user try to screen charing with same user, the event send is not a offer but renegociation. So could clear arry only when user out of circle.
2021-01-07 12:13:12 +01:00
Gregoire Parant
018f01e878 Increase stability camera and microphone permission 2021-01-07 11:02:00 +01:00
Gregoire Parant
8c89b5e0b1 Permit to change style when getCamera was ready and permission accorded 2021-01-07 10:30:28 +01:00
Gregoire Parant
d4c7a20dfa Update feedback @moufmouf 2021-01-07 09:42:11 +01:00
Gregoire Parant
1659fa400f Increase stability to force stopped screen sharing 2021-01-06 17:09:17 +01:00
kharhamel
fbb44af369 added a basic loader 2021-01-06 17:08:48 +01:00
Gregoire Parant
73d7e798e9 Upgrade conversion
When user send multi message, scroll on last message
2021-01-06 17:08:13 +01:00
Kharhamel
0ebf8798ea
Merge pull request #558 from thecodingmachine/dependabot/npm_and_yarn/back/axios-0.21.1
Bump axios from 0.20.0 to 0.21.1 in /back
2021-01-06 16:59:14 +01:00
dependabot[bot]
e13a5f3e64
Bump systeminformation from 4.30.5 to 4.31.1 in /pusher
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 4.30.5 to 4.31.1.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v4.30.5...v4.31.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 14:41:47 +00:00
dependabot[bot]
358292840b
Bump axios from 0.20.0 to 0.21.1 in /back
Bumps [axios](https://github.com/axios/axios) from 0.20.0 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.20.0...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 14:41:45 +00:00
Kharhamel
de56f2e6c9
Merge pull request #560 from thecodingmachine/dependabot/npm_and_yarn/pusher/axios-0.21.1
Bump axios from 0.20.0 to 0.21.1 in /pusher
2021-01-06 15:41:02 +01:00
kharhamel
1359fbe977 updated phaser to version 3.51 and fixed the BC 2021-01-06 15:00:54 +01:00
Gregoire Parant
4397ff7712 Update style and focus keyboard 2021-01-06 13:36:18 +01:00
Gregoire Parant
438469ae24 Verify URL in message 2021-01-06 12:20:02 +01:00
dependabot[bot]
3e0b85701c
Bump axios from 0.20.0 to 0.21.1 in /pusher
Bumps [axios](https://github.com/axios/axios) from 0.20.0 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.20.0...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 10:33:33 +00:00
David Négrier
178af22280
Merge pull request #557 from thecodingmachine/dependabot/npm_and_yarn/back/systeminformation-4.31.1
Bump systeminformation from 4.30.5 to 4.31.1 in /back
2021-01-06 09:57:45 +01:00
dependabot[bot]
eb56e05e1d
Bump systeminformation from 4.30.5 to 4.31.1 in /back
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 4.30.5 to 4.31.1.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v4.30.5...v4.31.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 08:19:02 +00:00
David Négrier
a9bef547c5
Merge pull request #554 from thecodingmachine/dependabot/npm_and_yarn/front/axios-0.21.1
Bump axios from 0.20.0 to 0.21.1 in /front
2021-01-06 09:18:08 +01:00
dependabot[bot]
c7ed0bf8bb
Bump axios from 0.20.0 to 0.21.1 in /front
Bumps [axios](https://github.com/axios/axios) from 0.20.0 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.20.0...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 23:50:25 +00:00
Kharhamel
a270b6260a
Merge pull request #552 from thecodingmachine/level3URllink
HOTFIX: Allow exitUrl relative links to rewrite map domain and map instance
2021-01-05 19:12:17 +01:00
kharhamel
6caa0e5b62 HOTFIX: the map property exitUrl now accept relative links that are deep enough to rewrite the base url 2021-01-05 18:23:17 +01:00
David Négrier
dea7d6dba7
Merge pull request #541 from Informatic/feature/map-sounds
[rC3] front: implement map sounds
2021-01-05 13:42:50 +01:00
David Négrier
a4743d5ba4
Merge pull request #546 from Mewp/pusher-configurable-port
Add a PUSHER_HTTP_PORT configuration variable.
2021-01-05 11:53:37 +01:00
Mewp
4be009d5a1 Add a PUSHER_HTTP_PORT configuration variable.
Some deployments might not be based on docker, and not on separate
hosts. In such cases, it would be useful to be able to configure the
port pusher listens on.
2021-01-04 18:23:33 +01:00
David Négrier
359fa3a571
Merge pull request #545 from thecodingmachine/develop
Release 2021-01-04
2021-01-04 18:13:53 +01:00
David Négrier
e02e051f91
Merge pull request #544 from thecodingmachine/updateMenu
Update menu design
2021-01-04 18:10:27 +01:00
Gregoire Parant
ac92cbc8f7 Crate share menu and fix menu design 2021-01-04 17:13:41 +01:00
Piotr Dobrowolski
28d687e338 front: implement map sounds 2021-01-04 16:57:31 +01:00
David Négrier
cc805f5086
Merge pull request #507 from thecodingmachine/develop
Release 2020-12-18
2021-01-04 14:35:17 +01:00
Oliver Lorenz
7c89cf0e47 feat: adds property openWebsitePolicy to set allow property in iframe 2020-12-29 23:17:16 +01:00
Kharhamel
284846e8a5
Merge pull request #519 from Palid/patch-1
Fix CustomizeScene killing CPU
2020-12-29 15:17:42 +01:00
David Négrier
6a2b583ca5
Merge pull request #512 from thecodingmachine/doctilelayerformat
Improving doc: the tile layer format must be CSV
2020-12-29 10:15:50 +01:00
Dariusz Niemczyk
640d994dda
Properly fix the CustomizeScene by limiting input
When left/right arrow is being held on chrome the Phaser gets into infinite rendering loop that doesn't crash the browser but makes it slow to a crawl.
2020-12-27 11:00:23 +01:00
Dariusz Niemczyk
c9250c08f3
Fix CustomizeScene killing CPU
Fixes #518
2020-12-27 10:47:56 +01:00
David Négrier
76dee71a5f Improving doc: the tile layer format must be CSV 2020-12-20 22:31:06 +01:00
David Négrier
7bbfa16ca2 Merge branch 'master' of github.com:thecodingmachine/workadventure into develop 2020-12-18 17:16:47 +01:00
David Négrier
b4dc73973e
Merge pull request #510 from thecodingmachine/fixcd
Switching to deeployer-action to speed up and fix CD
2020-12-18 17:15:54 +01:00
David Négrier
a5b5007908 Switching to deeployer-action to speed up CD 2020-12-18 17:04:31 +01:00
David Négrier
e5138e1c03
Merge pull request #505 from thecodingmachine/fixFrameLocalStorage
Manage Local Storage customers player error
2020-12-18 16:33:36 +01:00
Gregoire Parant
a1fd209578 Fix catch error 2020-12-18 16:30:22 +01:00
David Négrier
4940e7db98
Merge pull request #506 from thecodingmachine/fixreconnect
Fixing reconnection
2020-12-18 16:28:19 +01:00
David Négrier
36f886aed6 Fixing cat running too fast on reconnect scene because animations were duplicated 2020-12-18 16:08:04 +01:00
David Négrier
df114bc1ce Fixing broken reconnection 2020-12-18 15:59:07 +01:00
Gregoire Parant
323fa6abba Create exception error 2020-12-18 14:30:46 +01:00
Gregoire Parant
f5dd5efc0e Manage Local Storage customers player error 2020-12-18 13:56:25 +01:00
grégoire parant
84de023d82
Merge pull request #504 from thecodingmachine/startTcm
Start layer TCM
2020-12-18 13:03:31 +01:00
Gregoire Parant
01c430dfdb Start layer TCM 2020-12-18 12:45:50 +01:00
David Négrier
77d14b8610 Fix TCM map 2020-12-18 10:11:50 +01:00
David Négrier
15fb483115 Fix TCM map 2020-12-18 10:10:28 +01:00
David Négrier
7d8aa193f5
Merge pull request #502 from thecodingmachine/develop
Release 2020-12-17
2020-12-18 09:01:44 +01:00
Gregoire Parant
89064d23f9 Fix style 2020-12-18 00:09:07 +01:00
Gregoire Parant
4f4e7e3d7d Change layer tcm-start => start-tcm 2020-12-17 23:47:17 +01:00
grégoire parant
74bac4207d
Merge pull request #503 from thecodingmachine/fixStyleMenu
Fix ci
2020-12-17 23:30:58 +01:00
Gregoire Parant
9aabada7ac Fix ci 2020-12-17 23:26:18 +01:00
David Négrier
14a82bc278
Merge pull request #501 from thecodingmachine/fixStyleMenu
Fix style menu
2020-12-17 22:53:28 +01:00
David Négrier
0984e7eaad Fix linting 2020-12-17 22:35:38 +01:00
Gregoire Parant
ed214f2b41 Fix style menu 2020-12-17 22:10:36 +01:00
David Négrier
0feba8be8f Removing reference to tutorial map until it is production ready 2020-12-17 22:08:51 +01:00
Gregoire Parant
ed8232b0f5 Fix style menu 2020-12-17 21:58:18 +01:00
grégoire parant
ad56aafd15
Merge pull request #500 from thecodingmachine/fixCloseCoWebsite
Add new click event to close co website
2020-12-17 19:48:56 +01:00
Gregoire Parant
e77eb6d5be Typo fixes 2020-12-17 18:19:47 +01:00
Gregoire Parant
ca1cd388e8 Fix lint 2020-12-17 16:39:11 +01:00
Gregoire Parant
08ce954f56 Add new click event to close co website 2020-12-17 16:36:01 +01:00
David Négrier
6d4e5bcb99
Merge pull request #499 from thecodingmachine/typofixes
Typo fixes
2020-12-17 16:13:29 +01:00
David Négrier
055131ac66 Typo fixes 2020-12-17 15:20:42 +01:00
Gregoire Parant
2236879462 Fix erreur name on website
- replace WorkAdventure => WorkAdventure
2020-12-17 14:34:24 +01:00
grégoire parant
ce4bb4221f
Merge pull request #497 from thecodingmachine/notifOutSound
Change out notification sound
2020-12-17 14:28:40 +01:00
Gregoire Parant
faf32bfa01 Fix event click listner 2020-12-17 14:16:10 +01:00
Gregoire Parant
2d4193a917 Merge branch 'develop' into notifOutSound 2020-12-17 13:56:21 +01:00
Kharhamel
432fd821e0
Merge pull request #498 from thecodingmachine/fixGoToSpark
FIX: spark button open in a new window
2020-12-16 19:08:42 +01:00
kharhamel
9fbcf0dc12 FIX: spark button open in a new window 2020-12-16 19:02:10 +01:00
Gregoire Parant
6a21436c9e Update menu 2020-12-16 18:56:02 +01:00
Gregoire Parant
a2d56ef56a Update admin menu 2020-12-16 18:52:11 +01:00
Gregoire Parant
1a27b7d2ee Update menu 2020-12-16 17:17:31 +01:00
Gregoire Parant
3e6aa84749 Update vagrant template 2020-12-16 16:39:34 +01:00
Gregoire Parant
af89965db8 Fix style button 2020-12-16 16:32:28 +01:00
Kharhamel
c93d1794b7
Merge pull request #496 from thecodingmachine/fixSkinChangeCrash
FIX: going back a 2nd time to SelectCharacterScene used to crash the game
2020-12-16 15:25:36 +01:00
Gregoire Parant
8bf72e1ffd Change out notification sound 2020-12-16 15:10:46 +01:00
kharhamel
eb88db92be FIX: going back a 2nd time to SelectCharacterScene used to crash the game 2020-12-16 15:09:58 +01:00
Kharhamel
1f3c738cd0
Merge pull request #491 from thecodingmachine/updateStyleCss
update pointer style
2020-12-16 12:58:37 +01:00
Kharhamel
7f127e9353
Merge pull request #495 from thecodingmachine/fixMenuFlicker
FIX: menu flicker
2020-12-16 12:57:42 +01:00
kharhamel
f5e77ad749 FIX: menu flicker 2020-12-16 12:49:34 +01:00
David Négrier
95a42197a6
Merge pull request #488 from thecodingmachine/apiscaling
Add scaling capability to the API servers with this one weird trick
2020-12-16 10:54:12 +01:00
Kharhamel
16f7c3d204
Merge pull request #492 from thecodingmachine/fixSceneNavigation
FIX: fix scene navigation
2020-12-15 18:14:03 +01:00
kharhamel
de9d6756b4 FIX: going to loginScene or customizeScene and then clicking next bring you back directly to the gameScene 2020-12-15 18:00:04 +01:00
Gregoire Parant
bb8980e1d2 update pointer style 2020-12-15 17:34:47 +01:00
Gregoire Parant
8947e1b781 update pointer style 2020-12-15 17:31:55 +01:00
Kharhamel
5890e72dd5
Merge pull request #471 from thecodingmachine/feat/menu
FEAT: prototype gameMenu, using html dom elements
2020-12-15 16:40:55 +01:00
kharhamel
069f2f1cec FEAT: prototype game menu using html elements, better icon for text chat 2020-12-15 16:37:57 +01:00
Kharhamel
4680c65500
Merge pull request #487 from thecodingmachine/website-demo
Update website
2020-12-15 16:29:36 +01:00
grégoire parant
2e511345f6
Merge pull request #490 from thecodingmachine/startLayerTcm
Add new start layer for TCM
2020-12-15 16:06:45 +01:00
Gregoire Parant
403400b170 Fixe url demo anonymous 2020-12-15 16:03:59 +01:00
Gregoire Parant
973ecb3446 Add new start layer for TCM 2020-12-15 12:54:42 +01:00
Gregoire Parant
22eb941084 Update css and cursor website 2020-12-15 09:17:09 +01:00
Gregoire Parant
794c13c8d5 Fixe url admin 2020-12-15 08:30:02 +01:00
David Négrier
49c7927e9f Load balancing preprod API back servers 2020-12-14 23:12:51 +01:00
David Négrier
c633de5eed Making HTTP and GRPC ports configurable in API server 2020-12-14 22:43:05 +01:00
David Négrier
aeb5dc7922 Add scaling capability to the API servers with this one weird trick
:) This allows spreading rooms on different API servers based on room name.
Note this does provide neither autoscaling nor high availability, but it provides some kind of load balancing.
2020-12-14 22:20:43 +01:00
Gregoire Parant
f8c3a10930 Update website for demo and anonymous conection 2020-12-14 20:27:56 +01:00
David Négrier
7e2e530f9f
Merge pull request #486 from thecodingmachine/doc_for_collides
Adding documentation for "collides" property
2020-12-14 17:01:39 +01:00
David Négrier
8a1a23e82b Adding documentation for "collides" property 2020-12-14 16:53:04 +01:00
David Négrier
855b55903b
Merge pull request #440 from psy/develop
center spawn position in the middle of a tile
2020-12-11 17:36:10 +01:00
David Négrier
053a4449ae
Merge pull request #480 from thecodingmachine/dependabot/npm_and_yarn/pusher/systeminformation-4.30.5
Bump systeminformation from 4.27.11 to 4.30.5 in /pusher
2020-12-11 16:57:53 +01:00
David Négrier
de51f01dc1
Merge pull request #483 from thecodingmachine/dependabot/npm_and_yarn/website/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7 in /website
2020-12-11 16:57:32 +01:00
David Négrier
708790c570
Merge pull request #482 from thecodingmachine/dependabot/npm_and_yarn/front/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7 in /front
2020-12-11 16:57:23 +01:00
David Négrier
378517564a
Merge pull request #481 from thecodingmachine/dependabot/npm_and_yarn/back/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7 in /back
2020-12-11 16:57:10 +01:00
David Négrier
c2ff153bc7
Merge pull request #479 from thecodingmachine/dependabot/npm_and_yarn/pusher/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7 in /pusher
2020-12-11 16:56:47 +01:00
David Négrier
0ecbe1b282
Merge pull request #478 from thecodingmachine/dependabot/npm_and_yarn/messages/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7 in /messages
2020-12-11 16:56:31 +01:00
David Négrier
eec84d13cf Code cleanup 2020-12-11 16:47:59 +01:00
Kharhamel
5e7d33e533
Merge pull request #485 from thecodingmachine/webrtcOutSound
FEAT: now play a sound when a user quit the webrtc group
2020-12-11 16:28:01 +01:00
kharhamel
a1aedaa594 FEAT: now play a sound when a user quit the webrtc group 2020-12-11 16:01:31 +01:00
dependabot[bot]
3b612d9848
Bump ini from 1.3.5 to 1.3.7 in /website
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:50 +00:00
dependabot[bot]
37fba17c20
Bump ini from 1.3.5 to 1.3.7 in /front
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:44 +00:00
dependabot[bot]
a4f6ae7247
Bump systeminformation from 4.27.11 to 4.30.5 in /pusher
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 4.27.11 to 4.30.5.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v4.27.11...v4.30.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:43 +00:00
dependabot[bot]
d39dab3085
Bump ini from 1.3.5 to 1.3.7 in /back
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:43 +00:00
dependabot[bot]
9b6a7e651b
Bump ini from 1.3.5 to 1.3.7 in /pusher
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:43 +00:00
dependabot[bot]
1923ad185d
Bump ini from 1.3.5 to 1.3.7 in /messages
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 13:25:41 +00:00
David Négrier
e2c81c4eb1
Merge pull request #432 from thecodingmachine/scaling
Adding "pusher" container to add scaling capability
2020-12-11 14:24:57 +01:00
David Négrier
2122014947 Merge branch 'develop' of github.com:thecodingmachine/workadventure into scaling
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2020-12-11 13:06:10 +01:00
David Négrier
6f2c319785 Merge branch 'master' of github.com:thecodingmachine/workadventure into scaling
# Conflicts:
#	back/src/Services/SocketManager.ts
#	deeployer.libsonnet
#	docker-compose.yaml
#	front/src/Connexion/RoomConnection.ts
#	front/src/Enum/EnvironmentVariable.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/webpack.config.js
#	pusher/src/Controller/IoSocketController.ts
2020-12-11 13:00:11 +01:00
David Négrier
10e1400fc0 Fixing Uploader build 2020-12-11 12:37:11 +01:00
David Négrier
ea3aa3d128 Reimplementing ban/unban/messages 2020-12-11 12:23:50 +01:00
DESKTOP-V1PKLGR\npegu
b1f1942807 Fix some issues on map 2020-12-11 09:04:09 +01:00
DESKTOP-V1PKLGR\npegu
132617bbd0 Add floor2 and update floor0 and floor1 #3 2020-12-10 22:58:30 +01:00
DESKTOP-V1PKLGR\npegu
6e6c103a8d Add floor2 and update floor0 and floor1 #2 2020-12-10 22:44:50 +01:00
DESKTOP-V1PKLGR\npegu
0d530e18ce Add floor2 and update floor0 and floor1 2020-12-10 19:51:35 +01:00
David Négrier
24cb85cc7c Adapting admin connection to pusher.
Done: onUserLeave / onUserEnter
To be done: ban / unban
2020-12-10 17:46:15 +01:00
DESKTOP-V1PKLGR\npegu
eabd1d1b2f Change stairs for floor 0 2020-12-10 08:59:13 +01:00
DESKTOP-V1PKLGR\npegu
958ec51b12 Change map floor 1 Fixes 2020-12-09 23:50:30 +01:00
DESKTOP-V1PKLGR\npegu
7d62d64e17 Change map floor 1 2020-12-09 23:20:13 +01:00
David Négrier
bf797085e6 Extracting FileController into a Uploader container 2020-12-09 21:29:29 +01:00
DESKTOP-V1PKLGR\npegu
87519a1ad3 Add Xmas decorations #2 2020-12-09 18:04:52 +01:00
David Négrier
25f9662b3c Putting 2 replicas for pusher containers 2020-12-09 17:54:37 +01:00
David Négrier
f4ed26739f Specifying HTTP port for API 2020-12-09 17:45:05 +01:00
David Négrier
95df242f9c Specifying HTTP port for API 2020-12-09 17:37:52 +01:00
David Négrier
5c59470a04 Opening port 50051 on back in K8S 2020-12-09 17:25:10 +01:00
David Négrier
b12e07d353 Fixing pusher dockerfile 2020-12-09 16:36:50 +01:00
David Négrier
1a5078f87d Fixing pusher build + building in CI 2020-12-09 16:33:59 +01:00
David Négrier
ff17cb99d6 Cleaning up pusher 2020-12-09 16:07:06 +01:00
David Négrier
f40d8024f2 Fixing deploy 2020-12-09 15:27:52 +01:00
David Négrier
a59e40fc8e Fixing deployment 2020-12-09 15:19:22 +01:00
David Négrier
1bb0ff4b23 Fixing deploy 2020-12-09 13:50:18 +01:00
DESKTOP-V1PKLGR\npegu
add584f9a0 Add Wmas decorations 2020-12-08 19:52:27 +01:00
David Négrier
bd38dd5ede Fixing unit tests in back 2020-12-08 18:37:15 +01:00
DESKTOP-V1PKLGR\npegu
a7a5990479 Change the information page at the entrance and add inscriptions on the floor 2020-12-07 19:22:25 +01:00
DESKTOP-V1PKLGR\npegu
c897bd192d Fix exit_lyon URL 2020-12-07 14:15:07 +01:00
DESKTOP-V1PKLGR\npegu
da17da9613 Fix some details on collides 2020-12-07 09:19:31 +01:00
DESKTOP-V1PKLGR\npegu
0a415248c0 Change the TCM map to create a new style with more quality 2020-12-07 01:07:46 +01:00
David Négrier
5d188e51b2 Cleanup of useless files 2020-12-04 17:26:12 +01:00
David Négrier
10ee00e08a Improving benchmark measures 2020-12-04 15:13:46 +01:00
David Négrier
ea6a8ff406 Adding pusher to K8S deploy 2020-12-04 15:13:35 +01:00
Kharhamel
57a59cba8e
Merge pull request #473 from thecodingmachine/master
hotfixes from master
2020-12-03 18:48:43 +01:00
David Négrier
e89ed8cca8 Fixing benchmark 2020-12-03 17:19:56 +01:00
David Négrier
a19edd4dc1 Fixing reconnection to server on back failure 2020-12-03 16:39:44 +01:00
Kharhamel
95665a28d5
Merge pull request #456 from thecodingmachine/performance
Performance settings
2020-12-03 14:33:12 +01:00
David Négrier
2fba6956a6 Fixing typo in doc 2020-12-02 17:51:59 +01:00
David Négrier
5a0dfdb1d5 Fixing missing uuid in back 2020-12-02 17:51:46 +01:00
David Négrier
699d5f418a
Merge pull request #472 from thecodingmachine/hotfix/privateAnonymousLogin
FIX: couldn't access to an anonymous private map
2020-12-01 19:36:21 +01:00
kharhamel
1971d26dc0 FIX: couldn't access to an anonymous private map 2020-12-01 19:34:36 +01:00
Kharhamel
5f372e485d
Merge pull request #468 from thecodingmachine/master
hotfixes from master
2020-11-30 13:49:35 +01:00
Kharhamel
a11e9b0470
Merge pull request #464 from thecodingmachine/dependabot/npm_and_yarn/back/systeminformation-4.30.5
Bump systeminformation from 4.27.11 to 4.30.5 in /back
2020-11-30 11:44:31 +01:00
Kharhamel
d36cec23a7
Merge pull request #463 from thecodingmachine/hotfix/timeouts
Hotfix/timeouts
2020-11-30 11:43:36 +01:00
dependabot[bot]
0f223cdc63
Bump systeminformation from 4.27.11 to 4.30.5 in /back
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 4.27.11 to 4.30.5.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v4.27.11...v4.30.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-27 16:29:41 +00:00
kharhamel
28b0229c76 FIX: disabled pingCameraStatus and reduced the amount of errors thrown in console 2020-11-27 17:06:47 +01:00
Gregoire Parant
27634a61ee Create menu to set your quality video and game 2020-11-27 16:24:07 +01:00
Gregoire Parant
26b81cc788 Decrease fps 2020-11-27 12:44:32 +01:00
Gregoire Parant
961e4d3f57 Decrease fps 2020-11-27 12:13:46 +01:00
David Négrier
4c1e566a6c Adding a Pusher container as a middleware/dispatcher between front and back 2020-11-26 17:53:30 +01:00
Kharhamel
17e633ae45
Merge pull request #442 from cbluoss/develop
Adding more clothing options
2020-11-26 10:30:54 +01:00
Kharhamel
5c18f22f1d
Merge pull request #459 from thecodingmachine/hotfix/pushRoomIDToUrl
FIX: room id is now pushed to the url
2020-11-25 17:53:45 +01:00
kharhamel
65785240e1 FIX: room id is now pushed to the url 2020-11-25 17:17:48 +01:00
psy
f08aec28c0 use tilewidth and tileheight to center spawn position dynamically 2020-11-25 15:58:10 +01:00
Gregoire Parant
f596f613e8 Try to decrease phaser config fps 2020-11-25 01:35:42 +01:00
Gregoire Parant
4aca04d03a Try to decrease phaser config fps 2020-11-25 01:19:19 +01:00
Gregoire Parant
08d8222ed5 level up fps to decrease GPU use in the browser 2020-11-25 00:47:21 +01:00
yourcoke
8ff24c38b0
added: engelbert hose + mask 2020-11-24 20:23:20 +01:00
Kharhamel
48b856f836
Merge pull request #455 from thecodingmachine/develop
deployment
2020-11-24 18:29:43 +01:00
Kharhamel
4aa4a8d552
Merge pull request #435 from thecodingmachine/fix/rightColumn
Rewrite the way exit detection work
2020-11-24 14:51:28 +01:00
kharhamel
540f69267b FIX: maps/dist directory is now gitignored 2020-11-24 14:43:21 +01:00
kharhamel
8d8b879ed6 FIX: the game now uses the url hash to choose the start layer 2020-11-24 14:43:21 +01:00
kharhamel
09d6d22a5d FIX: rewrote the way scene exits are triggered 2020-11-24 14:43:21 +01:00
grégoire parant
c5af6df7fa
Merge pull request #448 from thecodingmachine/report-button
Report button discussion
2020-11-23 20:48:52 +01:00
grégoire parant
c3d4c668e2
Merge pull request #384 from thecodingmachine/action-button
Action button
2020-11-23 20:44:46 +01:00
Gregoire Parant
b1410b915c Add 'onaction' JitsiTrigger on Jitsi space floor0 2020-11-23 20:44:16 +01:00
Gregoire Parant
3d32fb90dc Add constant 2020-11-23 20:34:05 +01:00
Gregoire Parant
2812387650 Merge branch 'develop' into action-button 2020-11-23 20:08:19 +01:00
grégoire parant
d1f181cc0c
Merge pull request #430 from thecodingmachine/firefox-error-jitsi
Add close button jitsi frame
2020-11-23 16:07:02 +01:00
Gregoire Parant
26cfae7136 Merge branch 'develop' into firefox-error-jitsi
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2020-11-23 15:46:19 +01:00
grégoire parant
22217e27be
Merge pull request #429 from thecodingmachine/dependabot/npm_and_yarn/website/dot-prop-4.2.1
Bump dot-prop from 4.2.0 to 4.2.1 in /website
2020-11-23 15:40:33 +01:00
grégoire parant
b0c54776b1
Merge pull request #376 from thecodingmachine/windows-focus-blur-camera
Switch off camera when user is not focused on WorkAdventure windows
2020-11-23 15:35:45 +01:00
Gregoire Parant
fd3b8dda2c Fix report button on anonymous connection 2020-11-22 12:40:03 +01:00
Gregoire Parant
39cdc3fbd9 Fix trgger stream and update scene record 2020-11-21 18:47:38 +01:00
Gregoire Parant
a6876658ab Merge branch 'develop' into windows-focus-blur-camera
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2020-11-21 15:57:55 +01:00
yourcoke
bbd3d9efae
added: hoodies 2020-11-21 15:46:04 +01:00
Gregoire Parant
f656d2edef Update gitignore 2020-11-21 15:41:23 +01:00
Gregoire Parant
3aaeda6f80 Merge branch 'develop' into action-button
# Conflicts:
#	front/dist/resources/style/style.css
#	front/src/Phaser/Game/GameScene.ts
2020-11-21 15:40:24 +01:00
yourcoke
f5e41cc285
added: pride shirt 2020-11-20 15:56:58 +01:00
yourcoke
62f13f6b30
added: mate bottle accessorie 2020-11-20 11:49:08 +01:00
yourcoke
430201061d
added: tinfoil hat1 2020-11-20 11:00:31 +01:00
yourcoke
a6c8132f0a
added: tinfoil hat1 2020-11-20 10:59:22 +01:00
psy
9e835620f1 center spawn position in the middle of a tile, instead of the upper left corner 2020-11-19 13:19:56 +01:00
Gregoire Parant
92137dc0a3 Merge branch 'master' into develop 2020-11-18 16:57:14 +01:00
Gregoire Parant
c956e27bc8 Add tenue sg 2020-11-18 16:55:58 +01:00
David Négrier
e47ec5dd87
Merge pull request #436 from thecodingmachine/website-typos-changes
Website typos changes
2020-11-18 14:23:56 +01:00
kevin
54703c77e4 fix conflicts 2020-11-18 13:04:16 +01:00
kevin
a969e33bee fix email 2020-11-18 12:21:42 +01:00
David Négrier
9db30a44b3
Merge pull request #434 from thecodingmachine/website-typos-changes
Wording changes
2020-11-18 09:37:40 +01:00
kevin
55ce1eee03 wording changes 2020-11-18 09:11:28 +01:00
kevin
62a1732e53 wording changes 2020-11-18 08:40:42 +01:00
Gregoire Parant
1bff2addf1 Merge branch 'develop' into firefox-error-jitsi
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2020-11-17 18:54:51 +01:00
Gregoire Parant
0a7063a478 Add close button 2020-11-17 18:03:44 +01:00
dependabot[bot]
b8bafe9c7e
Bump dot-prop from 4.2.0 to 4.2.1 in /website
Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/sindresorhus/dot-prop/releases)
- [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-17 14:26:58 +00:00
Gregoire Parant
1570ef9663 Merge branch 'develop' into windows-focus-blur-camera
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
2020-11-16 15:46:52 +01:00
Gregoire Parant
8412575c40 Merge branch 'develop' into windows-focus-blur-camera
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2020-11-10 15:27:22 +01:00
Gregoire Parant
694f5d692f Merge branch 'develop' into windows-focus-blur-camera 2020-11-10 13:07:08 +01:00
Gregoire Parant
76014e3dc1 Merge branch 'develop' into action-button 2020-11-10 13:06:47 +01:00
David Négrier
00b83ae349 Merge branch 'develop' of github.com:thecodingmachine/workadventure into windows-focus-blur-camera 2020-11-06 17:36:43 +01:00
David Négrier
8dfdee85ea Merge branch 'develop' of github.com:thecodingmachine/workadventure into action-button 2020-11-05 16:47:56 +01:00
David Négrier
040170d6ab Merge branch 'develop' of github.com:thecodingmachine/workadventure into action-button 2020-11-05 09:14:12 +01:00
Gregoire Parant
a1d3b01619 Fix typo 2020-11-04 16:30:01 +01:00
Gregoire Parant
968787555f Update feedback @moufmouf 2020-11-04 13:33:58 +01:00
Gregoire Parant
47a049ecaf Feedback comment @moufmouf 2020-11-04 12:42:33 +01:00
Gregoire Parant
6051e5f46a Fix when user have activated action button 2020-11-01 11:53:24 +01:00
Gregoire Parant
fcb7f364b6 Fix button action when user have activated 2020-11-01 11:49:09 +01:00
Gregoire Parant
74de2746c2 Create action button 2020-10-31 14:04:55 +01:00
Gregoire Parant
df49ea856a Fix conflict error 2020-10-27 20:51:11 +01:00
Gregoire Parant
855f42a12e Merge remote-tracking branch 'github.com/develop' into windows-focus-blur-camera
# Conflicts:
#	front/src/WebRtc/MediaManager.ts
2020-10-26 22:43:14 +01:00
Gregoire Parant
997acd17ad Update to use update function scene 2020-10-26 22:39:52 +01:00
Gregoire Parant
69f3e511ab Ping status camera and microphone 2020-10-24 14:40:51 +02:00
Gregoire Parant
199ed1266a Switch off camera when user is not focused on WorkAdventure windows
Feature to switch off camera when user is not focused on WorkAdventure windows after 10 seconds
2020-10-24 14:13:23 +02:00
1177 changed files with 84650 additions and 26231 deletions

2
.dockerignore Normal file
View file

@ -0,0 +1,2 @@
**/node_modules/**
**/Dockerfile

View file

@ -5,3 +5,27 @@ JITSI_PRIVATE_MODE=false
JITSI_ISS= JITSI_ISS=
SECRET_JITSI_KEY= SECRET_JITSI_KEY=
ADMIN_API_TOKEN=123 ADMIN_API_TOKEN=123
START_ROOM_URL=/_/global/maps.workadventure.localhost/starter/map.json
# If your Turn server is configured to use the Turn REST API, you should put the shared auth secret here.
# If you are using Coturn, this is the value of the "static-auth-secret" parameter in your coturn config file.
# Keep empty if you are sharing hard coded / clear text credentials.
TURN_STATIC_AUTH_SECRET=
DISABLE_NOTIFICATIONS=true
SKIP_RENDER_OPTIMIZATIONS=false
# The email address used by Let's encrypt to send renewal warnings (compulsory)
ACME_EMAIL=
MAX_PER_GROUP=4
MAX_USERNAME_LENGTH=8
OPID_CLIENT_ID=
OPID_CLIENT_SECRET=
OPID_CLIENT_ISSUER=
OPID_CLIENT_REDIRECT_URL=
OPID_LOGIN_SCREEN_PROVIDER=http://pusher.workadventure.localhost/login-screen
OPID_PROFILE_SCREEN_PROVIDER=
DISABLE_ANONYMOUS=
# If you want to have a contact page in your menu, you MUST set CONTACT_URL to the URL of the page that you want
CONTACT_URL=

View file

@ -1,7 +1,13 @@
name: Build, push and deploy Docker image name: Build, push and deploy Docker image
on: on:
- push push:
branches: [master, develop]
release:
types: [created]
pull_request:
types: [ labeled, synchronize ]
# Enables BuildKit # Enables BuildKit
env: env:
@ -10,7 +16,7 @@ env:
jobs: jobs:
build-front: build-front:
if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -30,11 +36,11 @@ jobs:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
repository: thecodingmachine/workadventure-front repository: thecodingmachine/workadventure-front
tags: ${{ env.GITHUB_REF_SLUG }} tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
add_git_labels: true add_git_labels: true
build-back: build-back:
if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -53,11 +59,11 @@ jobs:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
repository: thecodingmachine/workadventure-back repository: thecodingmachine/workadventure-back
tags: ${{ env.GITHUB_REF_SLUG }} tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
add_git_labels: true add_git_labels: true
build-website: build-pusher:
if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -71,16 +77,39 @@ jobs:
- name: "Build and push back image" - name: "Build and push back image"
uses: docker/build-push-action@v1 uses: docker/build-push-action@v1
with: with:
dockerfile: website/Dockerfile dockerfile: pusher/Dockerfile
path: website/ path: ./
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
repository: thecodingmachine/workadventure-website repository: thecodingmachine/workadventure-pusher
tags: ${{ env.GITHUB_REF_SLUG }} tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
add_git_labels: true
build-uploader:
if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Create a slugified value of the branch
- uses: rlespinasse/github-slug-action@3.1.0
- name: "Build and push back image"
uses: docker/build-push-action@v1
with:
dockerfile: uploader/Dockerfile
path: ./
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
repository: thecodingmachine/workadventure-uploader
tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
add_git_labels: true add_git_labels: true
build-maps: build-maps:
if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -100,14 +129,18 @@ jobs:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
repository: thecodingmachine/workadventure-maps repository: thecodingmachine/workadventure-maps
tags: ${{ env.GITHUB_REF_SLUG }} tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
add_git_labels: true add_git_labels: true
deeploy: deeploy:
needs: needs:
- build-front - build-front
- build-back - build-back
- build-pusher
- build-maps
- build-uploader
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }}
steps: steps:
- name: Checkout - name: Checkout
@ -116,51 +149,56 @@ jobs:
# Create a slugified value of the branch # Create a slugified value of the branch
- uses: rlespinasse/github-slug-action@3.1.0 - uses: rlespinasse/github-slug-action@3.1.0
- name: Write certificate
run: echo "${CERTS_PRIVATE_KEY}" > secret.key && chmod 0600 secret.key
env:
CERTS_PRIVATE_KEY: ${{ secrets.CERTS_PRIVATE_KEY }}
- name: Download certificate
run: mkdir secrets && scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i secret.key ubuntu@cert.workadventu.re:./config/live/workadventu.re/* secrets/
- name: Create namespace
uses: steebchen/kubectl@v1.0.0
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_FILE_BASE64 }}
with:
args: create namespace workadventure-${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
continue-on-error: true
- name: Delete old certificates in namespace
uses: steebchen/kubectl@v1.0.0
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_FILE_BASE64 }}
with:
args: -n workadventure-${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} delete secret certificate-tls
continue-on-error: true
- name: Install certificates in namespace
uses: steebchen/kubectl@v1.0.0
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_FILE_BASE64 }}
with:
args: -n workadventure-${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} create secret tls certificate-tls --key="secrets/privkey.pem" --cert="secrets/fullchain.pem"
- name: Deploy - name: Deploy
uses: thecodingmachine/deeployer@master uses: thecodingmachine/deeployer-action@master
env: env:
KUBE_CONFIG_FILE: ${{ secrets.KUBE_CONFIG_FILE }} KUBE_CONFIG_FILE: ${{ secrets.KUBE_CONFIG_FILE }}
ADMIN_API_TOKEN: ${{ secrets.ADMIN_API_TOKEN }} ADMIN_API_TOKEN: ${{ secrets.ADMIN_API_TOKEN }}
JITSI_ISS: ${{ secrets.JITSI_ISS }} JITSI_ISS: ${{ secrets.JITSI_ISS }}
JITSI_URL: ${{ secrets.JITSI_URL }} JITSI_URL: ${{ secrets.JITSI_URL }}
SECRET_JITSI_KEY: ${{ secrets.SECRET_JITSI_KEY }} SECRET_JITSI_KEY: ${{ secrets.SECRET_JITSI_KEY }}
TURN_STATIC_AUTH_SECRET: ${{ secrets.TURN_STATIC_AUTH_SECRET }}
DEPLOY_REF: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
POSTHOG_URL: ${{ secrets.POSTHOG_URL }}
with: with:
namespace: workadventure-${{ env.GITHUB_REF_SLUG }} namespace: workadventure-${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }}
- name: Add a comment in PR - name: Add a comment in PR
uses: unsplash/comment-on-pr@v1.2.0 uses: unsplash/comment-on-pr@v1.2.0
if: ${{ env.GITHUB_REF_SLUG != 'master' }} if: ${{ github.event_name == 'pull_request' }}
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
msg: Environment deployed at https://${{ env.GITHUB_REF_SLUG }}.workadventure.test.thecodingmachine.com msg: "Environment deployed at https://play-${{ env.GITHUB_HEAD_REF_SLUG }}.test.workadventu.re \nTests available at https://maps-${{ env.GITHUB_HEAD_REF_SLUG }}.test.workadventu.re/tests"
check_for_duplicate_msg: true
- name: Run Cypress tests
uses: cypress-io/github-action@v2
if: ${{ env.GITHUB_REF_SLUG != 'master' }}
env:
CYPRESS_BASE_URL: https://play.${{ env.GITHUB_REF_SLUG }}.workadventure.test.thecodingmachine.com
with:
env: host=play.${{ env.GITHUB_REF_SLUG }}.workadventure.test.thecodingmachine.com,port=80
spec: cypress/integration/spec.js
wait-on: https://play.${{ env.GITHUB_REF_SLUG }}.workadventure.test.thecodingmachine.com
working-directory: e2e
- name: Run Cypress tests in prod
uses: cypress-io/github-action@v2
if: ${{ env.GITHUB_REF_SLUG == 'master' }}
env:
CYPRESS_BASE_URL: https://play.workadventu.re
with:
env: host=play.workadventu.re
spec: cypress/integration/spec.js
wait-on: https://workadventu.re
working-directory: e2e
- name: "Upload the screenshot on test failure"
uses: actions/upload-artifact@v1
if: failure()
with:
name: "screenshot"
path: "./e2e/cypress/screenshots/spec.js/WorkAdventureGame -- loads (failed).png"

View file

@ -1,7 +1,8 @@
name: Cleanup images and environments name: Cleanup images and environments
on: on:
- delete pull_request:
types: [ closed ]
# Enables BuildKit # Enables BuildKit
env: env:
@ -14,13 +15,12 @@ jobs:
steps: steps:
# Create a slugified value of the branch # Create a slugified value of the branch
- uses: rlespinasse/github-slug-action@1.1.0 - uses: rlespinasse/github-slug-action@3.1.0
- name: Cleanup - name: Cleanup
continue-on-error: true
uses: thecodingmachine/deeployer-cleanup-action@master uses: thecodingmachine/deeployer-cleanup-action@master
env: env:
KUBE_CONFIG_FILE: ${{ secrets.KUBE_CONFIG_FILE }} KUBE_CONFIG_FILE: ${{ secrets.KUBE_CONFIG_FILE }}
with: with:
# FIXME: we are not using ${{ env.GITHUB_REF_SLUG }} that resolves to master BUT! we are not using a slugified namespace namespace: workadventure-${{ env.GITHUB_HEAD_REF_SLUG }}
# so complex namespace names will not be treated correctly
namespace: workadventure-${{ github.event.ref }}

71
.github/workflows/codeql-analysis.yml vendored Normal file
View file

@ -0,0 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ develop ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ develop ]
schedule:
- cron: '24 17 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View file

@ -3,11 +3,13 @@
name: "Continuous Integration" name: "Continuous Integration"
on: on:
- "pull_request" push:
- "push" branches:
- master
- develop
pull_request:
jobs: jobs:
continuous-integration-front: continuous-integration-front:
name: "Continuous Integration Front" name: "Continuous Integration Front"
@ -36,23 +38,87 @@ jobs:
working-directory: "messages" working-directory: "messages"
- name: "Build proto messages" - name: "Build proto messages"
run: yarn run proto && yarn run copy-to-front run: yarn run ts-proto && yarn run copy-to-front-ts-proto && yarn run json-copy-to-front
working-directory: "messages" working-directory: "messages"
- name: "Create index.html"
run: ./templater.sh
working-directory: "front"
- name: "Generate i18n files"
run: yarn run typesafe-i18n
working-directory: "front"
- name: "Build" - name: "Build"
run: yarn run build run: yarn run build
env: env:
API_URL: "localhost:8080" PUSHER_URL: "//localhost:8080"
ADMIN_URL: "//localhost:80"
working-directory: "front"
- name: "Svelte check"
run: yarn run svelte-check
working-directory: "front" working-directory: "front"
- name: "Lint" - name: "Lint"
run: yarn run lint run: yarn run lint
working-directory: "front" working-directory: "front"
- name: "Pretty"
run: yarn run pretty-check
working-directory: "front"
- name: "Jasmine" - name: "Jasmine"
run: yarn test run: yarn test
working-directory: "front" working-directory: "front"
continuous-integration-pusher:
name: "Continuous Integration Pusher"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2.0.0"
- name: "Setup NodeJS"
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install Protoc
uses: arduino/setup-protoc@v1
with:
version: '3.x'
- name: "Install dependencies"
run: yarn install
working-directory: "pusher"
- name: "Install messages dependencies"
run: yarn install
working-directory: "messages"
- name: "Build proto messages"
run: yarn run proto && yarn run copy-to-pusher && yarn run json-copy-to-pusher
working-directory: "messages"
- name: "Build"
run: yarn run tsc
working-directory: "pusher"
- name: "Lint"
run: yarn run lint
working-directory: "pusher"
- name: "Jasmine"
run: yarn test
working-directory: "pusher"
- name: "Prettier"
run: yarn run pretty-check
working-directory: "pusher"
continuous-integration-back: continuous-integration-back:
name: "Continuous Integration Back" name: "Continuous Integration Back"
@ -96,3 +162,7 @@ jobs:
run: yarn test run: yarn test
working-directory: "back" working-directory: "back"
- name: "Prettier"
run: yarn run pretty-check
working-directory: "back"

126
.github/workflows/end_to_end_tests.yml vendored Normal file
View file

@ -0,0 +1,126 @@
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "End to end tests"
on:
push:
branches:
- master
- develop
pull_request:
jobs:
start-runner:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false)
name: Start self-hosted EC2 runner
runs-on: ubuntu-latest
outputs:
label: ${{ steps.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Start EC2 runner
id: start-ec2-runner
uses: machulav/ec2-github-runner@v2
with:
mode: start
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
ec2-image-id: ami-094dbcc53250a2480
ec2-instance-type: m5.2xlarge
subnet-id: subnet-0ac40025f559df1bc
security-group-id: sg-0e36e96e3b8ed2d64
#iam-role-name: my-role-name # optional, requires additional permissions
#aws-resource-tags: > # optional, requires additional permissions
# [
# {"Key": "Name", "Value": "ec2-github-runner"},
# {"Key": "GitHubRepository", "Value": "${{ github.repository }}"}
# ]
end-to-end-tests:
name: "End-to-end testcafe tests"
needs: start-runner # required to start the main job when the runner is ready
runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner
steps:
- name: "Checkout"
uses: "actions/checkout@v2.0.0"
- name: "Setup NodeJS"
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: "Install dependencies"
run: npm install
working-directory: "tests"
- name: "Setup .env file"
run: cp .env.template .env
- name: "Edit ownership of file for test cases"
run: sudo chown 1000:1000 -R .
- name: "Start environment"
run: LIVE_RELOAD=0 docker-compose up -d
- name: "Wait for environment to build (and downloading testcafe image)"
run: (docker-compose -f docker-compose.testcafe.yml build &) && docker-compose logs -f --tail=0 front | grep -q "Compiled successfully"
# - name: "temp debug: display logs"
# run: docker-compose logs
#
# - name: "Wait for back start"
# run: docker-compose logs -f back | grep -q "WorkAdventure HTTP API starting on port"
#
# - name: "Wait for pusher start"
# run: docker-compose logs -f pusher | grep -q "WorkAdventure starting on port"
- name: "Run tests"
run: PROJECT_DIR=$(pwd) docker-compose -f docker-compose.testcafe.yml up --exit-code-from testcafe
- name: Upload failed tests
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: my-artifact
path: './tests/screenshots/'
- name: Display state
if: ${{ failure() }}
run: docker-compose ps
- name: Display logs
if: ${{ failure() }}
run: docker-compose logs
stop-runner:
name: Stop self-hosted EC2 runner
needs:
- start-runner # required to get output from the start-runner job
- end-to-end-tests # required to wait when the main job is done
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Configure AWS credentials
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false)
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Stop EC2 runner
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false)
uses: machulav/ec2-github-runner@v2
with:
mode: stop
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
label: ${{ needs.start-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }}

73
.github/workflows/push-to-npm.yml vendored Normal file
View file

@ -0,0 +1,73 @@
name: Push @workadventure/iframe-api-typings to NPM
on:
release:
types: [created]
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v2
with:
node-version: '14.x'
registry-url: 'https://registry.npmjs.org'
- name: Replace version number
run: 'sed -i "s#VERSION_PLACEHOLDER#${GITHUB_REF/refs\/tags\//}#g" package.json'
working-directory: "front/packages/iframe-api-typings"
- name: Debug package.json
run: cat package.json
working-directory: "front/packages/iframe-api-typings"
- name: Install Protoc
uses: arduino/setup-protoc@v1
with:
version: '3.x'
- name: "Install dependencies"
run: yarn install
working-directory: "front"
- name: "Install messages dependencies"
run: yarn install
working-directory: "messages"
- name: "Build proto messages"
run: yarn run ts-proto && yarn run copy-to-front-ts-proto && yarn run json-copy-to-front
working-directory: "messages"
- name: "Create index.html"
run: ./templater.sh
working-directory: "front"
- name: "Generate i18n files"
run: yarn run typesafe-i18n
working-directory: "front"
- name: "Build"
run: yarn run build-typings
env:
PUSHER_URL: "//localhost:8080"
ADMIN_URL: "//localhost:80"
working-directory: "front"
# We build the front to generate the typings of iframe_api, then we copy those typings in a separate package.
- name: Copy typings to package dir
run: cp front/dist/src/iframe_api.d.ts front/packages/iframe-api-typings/iframe_api.d.ts
- name: Copy typings to package dir (2)
run: cp -R front/dist/src/Api front/packages/iframe-api-typings/Api
- name: Install dependencies in package
run: yarn install
working-directory: "front/packages/iframe-api-typings"
- name: Publish package
run: yarn publish
working-directory: "front/packages/iframe-api-typings"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
if: ${{ github.event_name == 'release' }}

7
.gitignore vendored
View file

@ -3,4 +3,9 @@
.vagrant .vagrant
Vagrantfile Vagrantfile
docker-compose.override.yaml docker-compose.override.yaml
*.DS_Store *.DS_Store
maps/yarn.lock
maps/dist/computer.js
maps/dist/computer.js.map
node_modules
_

1
.husky/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
_

19
.husky/pre-commit Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
(
cd messages || exit
yarn run precommit
)
(
cd front || exit
yarn run precommit
)
(
cd pusher || exit
yarn run precommit
)
(
cd back || exit
yarn run precommit
)

166
CHANGELOG.md Normal file
View file

@ -0,0 +1,166 @@
## Version develop
### Updates
- Added multi Co-Website management
### Bugfix
- Moving a discussion over a user will now add this user to the discussion
- Being in a silent zone new forces mediaConstraints to false (#1508)
- Fixes for the emote menu (#1501)
- Fixing chat message attributed to wrong user (#1507 #1528)
## Version 1.5.0
### Updates
- Added support for login with OpenID Connect
- New scripting library available to extend WorkAdventure: see [Scripting API Extra](https://github.com/workadventure/scripting-api-extra/)
- New menu design!
- New `openTab` property (#1419)
- Possible integration with Posthog (#1458)
### Bugfix
- Fixing layers flattened several times (#1427 @Lurkars)
- Fixing CSS of video elements
- Chat now scrolls to bottom when opened (#1450)
- Fixing silent zone not respected when exiting from Jitsi (#1456)
- Fixing "yarn install" failing because of missing rights on some Docker installs (#1457)
- Fixing audio not shut down when exiting a room (#1459)
### Misc
- Finished migrating "Build your map" documentation into the "/docs" directory of this repository (#1417 #1385)
- Refactoring documentation (dedicated page for variables) (#1414)
- Front container code is now completely linted (#1413)
## Version 1.4.15
### Updates
- New scripting API features :
- Use `WA.ui.registerMenuCommand(commandDescriptor: string, options: MenuOptions): Menu` to add a custom menu or an iframe to the menu.
- New `jitsiWidth` parameter to set the width of Jitsi and Cowebsite (#1398 @tabascoeye)
- Refactored the way videos are displayed to better cope for vertical videos (on mobile)
- Fixing reconnection issues after 5 minutes of an inactive tab on Google Chrome
- Changes performed in `WA.room.setPropertyLayer` now have a real-time impact (#1395)
### Bugfixes
- Fixing streams in bubbles sometimes improperly muted when there are more than 2 people in the bubble (#1400 #1402)
- Properly displaying carriage returns in popups (#1388)
- `WA.state` now answers correctly to "in" keyword (#1393)
- Variables can now be nested in group layers (#1406)
## Version 1.4.14
### Updates
- New scripting API features :
- Use `WA.room.loadTileset(url: string) : Promise<number>` to load a tileset from a JSON file.
- Rewrote the way authentification works: the auth jwt token can now contains an email instead of an uuid
- Added an OpenId login flow than can be plugged to any OIDC provider.
- You can send a message to all rooms of your world from the console global message (user with tag admin only).
## Version 1.4.11
### Updates
- Added the ability to have animated tiles in maps #1216 #1217
- Enabled outlines on actionable item again (they were disabled when migrating to Phaser 3.50) #1218
- Enabled outlines on player names (when the mouse hovers on a player you can interact with) #1219
- Migrated the admin console to Svelte, and redesigned the console #1211
- Layer properties (like `exitUrl`, `silent`, etc...) can now also used in tile properties #1210 (@jonnytest1)
- New scripting API features :
- Use `WA.onInit(): Promise<void>` to wait for scripting API initialization
- Use `WA.room.showLayer(): void` to show a layer
- Use `WA.room.hideLayer(): void` to hide a layer
- Use `WA.room.setProperty() : void` to add, delete or change existing property of a layer
- Use `WA.player.onPlayerMove(): void` to track the movement of the current player
- Use `WA.player.id: string|undefined` to get the ID of the current player
- Use `WA.player.name: string` to get the name of the current player
- Use `WA.player.tags: string[]` to get the tags of the current player
- Use `WA.room.id: string` to get the ID of the room
- Use `WA.room.mapURL: string` to get the URL of the map
- Use `WA.room.mapURL: string` to get the URL of the map
- Use `WA.room.getMap(): Promise<ITiledMap>` to get the JSON map file
- Use `WA.room.setTiles(): void` to add, delete or change an array of tiles
- Use `WA.ui.registerMenuCommand(): void` to add a custom menu
- Use `WA.state.loadVariable(key: string): unknown` to retrieve a variable
- Use `WA.state.saveVariable(key: string, value: unknown): Promise<void>` to set a variable (across the room, for all users)
- Use `WA.state.onVariableChange(key: string): Observable<unknown>` to track a variable
- Use `WA.state.[any variable]: unknown` to access directly any variable (this is a shortcut to using `WA.state.loadVariable` and `WA.state.saveVariable`)
- Users blocking now relies on UUID rather than ID. A blocked user that leaves a room and comes back will stay blocked.
- The text chat was redesigned to be prettier and to use more features :
- The chat is now persistent between discussions and always accessible
- The chat now tracks incoming and outcoming users in your conversation
- The chat allows your to see the visit card of users
- You can close the chat window with the escape key
- Added a 'Enable notifications' button in the menu.
- The exchange format between Pusher and Admin servers has changed. If you have your own implementation of an admin server, these endpoints signatures have changed:
- `/api/map`: now accepts a complete room URL instead of organization/world/room slugs
- `/api/ban`: new endpoint to report users
- as a side effect, the "routing" is now completely stored on the admin side, so by implementing your own admin server, you can develop completely custom routing
## Version 1.4.3 - 1.4.4 - 1.4.5
## Bugfixes
- Fixing the generation of @workadventure/iframe-api-typings
## Version 1.4.2
## Updates
- A script in an iframe opened by another script can use the IFrame API.
## Version 1.4.1
### Bugfixes
- Loading errors after the preload stage should not crash the game anymore
## Version 1.4.0
### BREAKING CHANGES
- Scripting API:
- Changed function names: `restorePlayerControl` => `restorePlayerControls`, `disablePlayerControl` => `disablePlayerControls`.
Please keep in mind that the scripting API is still experimental. Some breaking changes can occur in it until we mark it as stable.
### Updates
- Added the emote feature to WorkAdventure. (@Kharhamel, @Tabascoeye)
- The emote menu can be opened by clicking on your character.
- Clicking on one of its element will close the menu and play an emote above your character.
- This emote can be seen by other players.
- Player names were improved. (@Kharhamel)
- We now create a GameObject.Text instead of GameObject.BitmapText
- now use the 'Press Start 2P' font family and added an outline
- As a result, we can now allow non-standard letters like french accents or chinese characters!
- Added the contact card feature. (@Kharhamel)
- Click on another player to see its contact info.
- Premium-only feature unfortunately. I need to find a way to make it available for all.
- If no contact data is found (either because the user is anonymous or because no admin backend), display an error card.
- Mobile support has been improved
- WorkAdventure automatically sets the zoom level based on the viewport size to ensure a sensible size of the map is visible, whatever the viewport used
- Mouse wheel support to zoom in / out
- Pinch support on mobile to zoom in / out
- Improved virtual joystick size (adapts to the zoom level)
- Redesigned intermediate scenes
- Redesigned Select Companion scene
- Redesigned Enter Your Name scene
- Added a new `DISPLAY_TERMS_OF_USE` environment variable to trigger the display of terms of use
- New scripting API features:
- Use `WA.loadSound(): Sound` to load / play / stop a sound
### Bug Fixes
- Pinch gesture does no longer move the character
## Version 1.3.0
### New Features
* Maps can now contain "group" layers (layers that contain other layers) - #899 #779 (@Lurkars @moufmouf)
### Updates
### Bug Fixes

113
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,113 @@
# Contributing to WorkAdventure
Are you looking to help on WorkAdventure? Awesome, feel welcome and read the following sections in order to know how to
ask questions and how to work on something.
## Contributions we are seeking
We love to receive contributions from our community — you!
There are many ways to contribute, from writing tutorials or blog posts, improving the documentation,
submitting bug reports and feature requests or writing code which can be incorporated into WorkAdventure itself.
## Contributing external resources
You can share your work on maps / articles / videos related to WorkAdventure on our [awesome-workadventure](https://github.com/workadventure/awesome-workadventure) list.
## Developer documentation
Documentation targeted at developers can be found in the [`/docs/dev`](docs/dev/)
## Using the issue tracker
First things first: **Do NOT report security vulnerabilities in public issues!**.
Please read the [security guide](SECURITY.md) to learn who to do a security disclosure to the WorkAdventure core team.
You can use [GitHub issue tracker](https://github.com/thecodingmachine/workadventure/issues) to:
- File bug reports
- Ask for feature requests
If you have more general questions, a good place to ask is [our Discord server](https://discord.gg/YGtngdh9gt).
Finally, you can come and talk to the WorkAdventure core team... on WorkAdventure, of course! [Our offices are here](https://play.staging.workadventu.re/@/tcm/workadventure/wa-village).
## Pull requests
Good pull requests - patches, improvements, new features - are a fantastic help. They should remain focused in scope
and avoid containing unrelated commits.
Please ask first before embarking on any significant pull request (e.g. implementing features, refactoring code),
otherwise you risk spending a lot of time working on something that the project's developers might not want to merge
into the project.
You can ask us on [Discord](https://discord.gg/YGtngdh9gt) or in the [GitHub issues](https://github.com/thecodingmachine/workadventure/issues).
### Linting your code
Before committing, be sure to install the "Prettier" precommit hook that will reformat your code to our coding style.
In order to enable the "Prettier" precommit hook, at the root of the project, run:
```console
$ yarn install
$ yarn run prepare
```
If you don't have the precommit hook installed (or if you committed code before installing the precommit hook), you will need
to run code linting manually:
```console
$ docker-compose exec front yarn run pretty
$ docker-compose exec pusher yarn run pretty
$ docker-compose exec back yarn run pretty
```
### Providing tests
WorkAdventure is based on a video game engine (Phaser), and video games are not the easiest programs to unit test.
Nevertheless, if your code can be unit tested, please provide a unit test (we use Jasmine), or an end-to-end test (we use Testcafe).
If you are providing a new feature, you should setup a test map in the `maps/tests` directory. The test map should contain
some description text describing how to test the feature.
* if the features is meant to be manually tested, you should modify the `maps/tests/index.html` file to add a reference
to your newly created test map
* if the features can be automatically tested, please provide a testcafe test
#### Running testcafe tests
End-to-end tests are available in the "/tests" directory.
To run these tests locally:
```console
$ LIVE_RELOAD=0 docker-compose up -d
$ cd tests
$ npm install
$ npm run test
```
Note: If your tests fail on a Javascript error in "sockjs", this is due to the
Webpack live reload. The Webpack live reload feature is conflicting with testcafe. This is why we recommend starting
WorkAdventure with the `LIVE_RELOAD=0` environment variable.
End-to-end tests can take a while to run. To run only one test, use:
```console
$ npm run test -- tests/[name of the test file].ts
```
You can also run the tests inside a container (but you will not have visual feedbacks on your test, so we recommend using
the local tests).
```console
$ LIVE_RELOAD=0 docker-compose up -d
# Wait 2-3 minutes for the environment to start, then:
$ PROJECT_DIR=$(pwd) docker-compose -f docker-compose.testcafe.yml up
```
### A bad wording or a missing language
If you notice a translation error or missing language you can help us by following the [how to translate](docs/dev/how-to-translate.md) documentation.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 KiB

1
README-LOGO.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

BIN
README-MAP.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View file

@ -1,41 +1,49 @@
![](https://github.com/thecodingmachine/workadventure/workflows/Continuous%20Integration/badge.svg) ![](https://github.com/thecodingmachine/workadventure/workflows/Continuous%20Integration/badge.svg) [![Discord](https://img.shields.io/discord/821338762134290432?label=Discord)](https://discord.gg/YGtngdh9gt)
![WorkAdventure landscape image](README-INTRO.jpg) ![WorkAdventure logo](README-LOGO.svg)
![WorkAdventure office image](README-MAP.png)
Demo here : [https://workadventu.re/](https://workadventu.re/). Live demo [here](https://play.workadventu.re/@/tcm/workadventure/wa-village).
# Work Adventure # WorkAdventure
## Work in progress WorkAdventure is a web-based collaborative workspace presented in the form of a
Work Adventure is a web-based collaborative workspace for small to medium teams (2-100 people) presented in the form of a
16-bit video game. 16-bit video game.
In Work Adventure, you can move around your office and talk to your colleagues (using a video-chat feature that is In WorkAdventure you can move around your office and talk to your colleagues (using a video-chat system, triggered when you approach someone).
triggered when you move next to a colleague).
See more features for your virtual office: https://workadventu.re/virtual-office
## Getting started ## Community resources
Check out resources developed by the WorkAdventure community at [awesome-workadventure](https://github.com/workadventure/awesome-workadventure)
## Setting up a development environment
Install Docker. Install Docker.
Run: Run:
``` ```
docker-compose up cp .env.template .env
docker-compose up -d
``` ```
The environment will start. The environment will start.
You should now be able to browse to http://workadventure.localhost/ and see the application. You should now be able to browse to http://play.workadventure.localhost/ and see the application.
You can view the dashboard at http://workadventure.localhost:8080/
Note: on some OSes, you will need to add this line to your `/etc/hosts` file: Note: on some OSes, you will need to add this line to your `/etc/hosts` file:
**/etc/hosts** **/etc/hosts**
``` ```
workadventure.localhost 127.0.0.1 127.0.0.1 workadventure.localhost
``` ```
Note: If on the first run you get a page with "network error". Try to ``docker-compose stop`` , then ``docker-compose start``.
Note 2: If you are still getting "network error". Make sure you are authorizing the self-signed certificate by entering https://pusher.workadventure.localhost and accepting them.
### MacOS developers, your environment with Vagrant ### MacOS developers, your environment with Vagrant
If you are using MacOS, you can increase Docker performance using Vagrant. If you want more explanations, you can read [this medium article](https://medium.com/better-programming/vagrant-to-increase-docker-performance-with-macos-25b354b0c65c). If you are using MacOS, you can increase Docker performance using Vagrant. If you want more explanations, you can read [this medium article](https://medium.com/better-programming/vagrant-to-increase-docker-performance-with-macos-25b354b0c65c).
@ -101,5 +109,7 @@ Vagrant destroy
* `Vagrant halt`: stop your VM Vagrant. * `Vagrant halt`: stop your VM Vagrant.
* `Vagrant destroy`: delete your VM Vagrant. * `Vagrant destroy`: delete your VM Vagrant.
## Features developed ## Setting up a production environment
You have more details of features developed in back [README.md](./back/README.md).
The way you set up your production environment will highly depend on your servers.
We provide a production ready `docker-compose` file that you can use as a good starting point in the [contrib/docker](https://github.com/thecodingmachine/workadventure/tree/master/contrib/docker) directory.

20
SECURITY.md Normal file
View file

@ -0,0 +1,20 @@
# Security Policy
## Reporting a Vulnerability
First things first: **Do NOT report security vulnerabilities in public issues!**
Please disclose responsibly by sending
a mail at security@workadventu.re (you can also ping us in the GitHub issues, but please, no details in the issues!)
We will assess the issue as soon as possible on a best-effort basis and will give you an estimate for when we have a fix
and release available for an eventual public disclosure.
We do not have a bug bounty program.
## Supported Versions
We only apply security patches on the latest tagged release and on the `master` and `develop` branches
Unless specified otherwise, do not expect us to fix security issues on past releases. We are only maintaining one release:
the latest one, which is online at https://play.workadventu.re.

View file

@ -2,7 +2,7 @@
# -*- mode: ruby -*- # -*- mode: ruby -*-
# vi: set ft=ruby : # vi: set ft=ruby :
# Box / OS # Box / OS
VAGRANT_BOX = 'bento/ubuntu-19.10' VAGRANT_BOX = 'bento/ubuntu-20.04'
# VM User — 'vagrant' by default # VM User — 'vagrant' by default
VM_USER = 'vagrant' VM_USER = 'vagrant'
@ -58,7 +58,7 @@ Vagrant.configure(2) do |config|
apt-get update -y apt-get update -y
apt-get install -y git apt-get install -y git
apt-get install -y apt-transport-https apt-get install -y apt-transport-https
apt-get install -y build-essential apt-get install -y ca-certificates
apt-get install -y curl apt-get install -y curl
apt-get install -y gnupg-agent apt-get install -y gnupg-agent
apt-get install -y software-properties-common apt-get install -y software-properties-common
@ -66,8 +66,8 @@ Vagrant.configure(2) do |config|
apt-key fingerprint 0EBFCD88 apt-key fingerprint 0EBFCD88
add-apt-repository \ add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \ $(lsb_release -cs) \
stable" stable"
apt-get update -y apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io apt-get install -y docker-ce docker-ce-cli containerd.io
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

View file

@ -25,6 +25,7 @@
], ],
"rules": { "rules": {
"no-unused-vars": "off", "no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "error" "@typescript-eslint/no-explicit-any": "error",
"no-throw-literal": "error"
} }
} }

1
back/.prettierignore Normal file
View file

@ -0,0 +1 @@
src/Messages/generated

4
back/.prettierrc.json Normal file
View file

@ -0,0 +1,4 @@
{
"printWidth": 120,
"tabWidth": 4
}

View file

@ -1,15 +1,26 @@
FROM thecodingmachine/workadventure-back-base:latest as builder # protobuf build
WORKDIR /var/www/messages FROM node:14.18.2-buster-slim@sha256:20bedf0c09de887379e59a41c04284974f5fb529cf0e13aab613473ce298da3d as builder
COPY --chown=docker:docker messages . WORKDIR /usr/src
COPY messages .
RUN yarn install && yarn proto RUN yarn install && yarn proto
FROM thecodingmachine/nodejs:12 # typescript build
FROM node:14.18.2-buster-slim@sha256:20bedf0c09de887379e59a41c04284974f5fb529cf0e13aab613473ce298da3d as builder2
COPY --chown=docker:docker back . WORKDIR /usr/src
COPY --from=builder --chown=docker:docker /var/www/messages/generated /usr/src/app/src/Messages/generated COPY back/yarn.lock back/package.json ./
RUN yarn install RUN yarn install
COPY back .
COPY --from=builder /usr/src/generated src/Messages/generated
ENV NODE_ENV=production ENV NODE_ENV=production
RUN yarn run tsc
CMD ["yarn", "run", "prod"] # final production image
FROM node:14.18.2-buster-slim@sha256:20bedf0c09de887379e59a41c04284974f5fb529cf0e13aab613473ce298da3d
WORKDIR /usr/src
COPY back/yarn.lock back/package.json ./
COPY --from=builder2 /usr/src/dist /usr/src/dist
ENV NODE_ENV=production
RUN yarn install --production
USER node
CMD ["yarn", "run", "runprod"]

View file

@ -1,61 +0,0 @@
# Back Features
## Login
To start your game, you must authenticate on the server back.
When you are authenticated, the back server return token and room starting.
```
POST => /login
Params :
email: email of user.
```
## Join a room
When a user is connected, the user can join a room.
So you must send emit `join-room` with information user:
```
Socket.io => 'join-room'
userId: user id of gamer
roomId: room id when user enter in game
position: {
x: position x on map
y: position y on map
}
```
All data users are stocked on socket client.
## Send position user
When user move on the map, you can share new position on back with event `user-position`.
The information sent:
```
Socket.io => 'user-position'
userId: user id of gamer
roomId: room id when user enter in game
position: {
x: position x on map
y: position y on map
}
```
All data users are updated on socket client.
## Receive positions of all users
The application sends position of all users in each room in every few 10 milliseconds.
The data will pushed on event `user-position`:
```
Socket.io => 'user-position'
[
{
userId: user id of gamer
roomId: room id when user enter in game
position: {
x: position x on map
y: position y on map
}
},
...
]
```
[<<< back](../README.md)

View file

@ -7,10 +7,14 @@
"tsc": "tsc", "tsc": "tsc",
"dev": "ts-node-dev --respawn ./server.ts", "dev": "ts-node-dev --respawn ./server.ts",
"prod": "tsc && node --max-old-space-size=4096 ./dist/server.js", "prod": "tsc && node --max-old-space-size=4096 ./dist/server.js",
"runprod": "node --max-old-space-size=4096 ./dist/server.js",
"profile": "tsc && node --prof ./dist/server.js", "profile": "tsc && node --prof ./dist/server.js",
"test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json",
"lint": "node_modules/.bin/eslint src/ . --ext .ts", "lint": "DEBUG= node_modules/.bin/eslint src/ . --ext .ts",
"fix": "node_modules/.bin/eslint --fix src/ . --ext .ts" "fix": "DEBUG= node_modules/.bin/eslint --fix src/ . --ext .ts",
"precommit": "lint-staged",
"pretty": "yarn prettier --write 'src/**/*.{ts,tsx}'",
"pretty-check": "yarn prettier --check 'src/**/*.{ts,tsx}'"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -36,37 +40,46 @@
}, },
"homepage": "https://github.com/thecodingmachine/workadventure#readme", "homepage": "https://github.com/thecodingmachine/workadventure#readme",
"dependencies": { "dependencies": {
"axios": "^0.20.0", "@workadventure/tiled-map-type-guard": "^1.0.3",
"body-parser": "^1.19.0", "axios": "^0.21.2",
"busboy": "^0.3.1", "busboy": "^0.3.1",
"circular-json": "^0.5.9", "circular-json": "^0.5.9",
"debug": "^4.3.1",
"generic-type-guard": "^3.2.0", "generic-type-guard": "^3.2.0",
"google-protobuf": "^3.13.0", "google-protobuf": "^3.13.0",
"http-status-codes": "^1.4.0", "grpc": "^1.24.4",
"iterall": "^1.3.0", "ipaddr.js": "^2.0.1",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"mkdirp": "^1.0.4", "mkdirp": "^1.0.4",
"multer": "^1.4.2",
"prom-client": "^12.0.0", "prom-client": "^12.0.0",
"query-string": "^6.13.3", "query-string": "^6.13.3",
"systeminformation": "^4.27.11", "redis": "^3.1.2",
"ts-node-dev": "^1.0.0-pre.44",
"typescript": "^3.8.3",
"uWebSockets.js": "uNetworking/uWebSockets.js#v18.5.0", "uWebSockets.js": "uNetworking/uWebSockets.js#v18.5.0",
"uuidv4": "^6.0.7" "uuidv4": "^6.0.7"
}, },
"devDependencies": { "devDependencies": {
"@types/busboy": "^0.2.3", "@types/busboy": "^0.2.3",
"@types/circular-json": "^0.4.0", "@types/circular-json": "^0.4.0",
"@types/debug": "^4.1.5",
"@types/google-protobuf": "^3.7.3", "@types/google-protobuf": "^3.7.3",
"@types/http-status-codes": "^1.2.0", "@types/http-status-codes": "^1.2.0",
"@types/jasmine": "^3.5.10", "@types/jasmine": "^3.5.10",
"@types/jsonwebtoken": "^8.3.8", "@types/jsonwebtoken": "^8.3.8",
"@types/mkdirp": "^1.0.1", "@types/mkdirp": "^1.0.1",
"@types/redis": "^2.8.31",
"@types/uuidv4": "^5.0.0", "@types/uuidv4": "^5.0.0",
"@typescript-eslint/eslint-plugin": "^2.26.0", "@typescript-eslint/eslint-plugin": "^5.8.0",
"@typescript-eslint/parser": "^2.26.0", "@typescript-eslint/parser": "^5.8.0",
"eslint": "^6.8.0", "eslint": "^8.5.0",
"jasmine": "^3.5.0" "jasmine": "^3.5.0",
"lint-staged": "^11.0.0",
"prettier": "^2.3.1",
"ts-node-dev": "^1.1.8",
"typescript": "^4.5.4"
},
"lint-staged": {
"*.ts": [
"prettier --write"
]
} }
} }

View file

@ -1,148 +0,0 @@
// Constants
let MIN_DISTANCE = 12;
let MAX_PER_GROUP = 3;
let NB_USERS = 10;
// Utils
let rand = function(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
};
let compareDistances = function(distA, distB) {
if (distA.distance < distB.distance) {
return -1;
}
if (distA.distance > distB.distance) {
return 1;
}
return 0;
};
let computeDistance = function (user1, user2) {
return Math.sqrt(Math.pow(user2.X - user1.X, 2) + Math.pow(user2.Y - user1.Y, 2));
};
// Test Data
let users = [];
for(let i = 1; i <= NB_USERS; i++) {
let user = {};
user.id = rand(0,99999);
user.X = rand(0, 40);
user.Y = rand(0, 40);
users.push(user);
}
// Compute distance between each user
let getDistanceOfEachUser = function(users) {
let i = 0;
let distances = [];
users.forEach(function(user1, key1) {
users.forEach(function(user2, key2) {
if(key1 < key2) {
let distanceObj = {};
distanceObj.distance = computeDistance(user1, user2);
distanceObj.first = user1;
distanceObj.second = user2;
distances[i] = distanceObj;
i++;
}
});
});
return distances;
};
// Organise groups
let createGroups = function(distances) {
let i = 0;
let groups = [];
let alreadyInAGroup = [];
for(let j = 0; j < distances.length; j++) {
let dist = distances[j];
if(dist.distance <= MIN_DISTANCE) {
if(typeof groups[i] === 'undefined') {
groups[i] = [];
}
if(groups[i].indexOf(dist.first) === -1 && typeof alreadyInAGroup[dist.first.id] === 'undefined') {
if(groups[i].length > 1) {
// if group is not empty we check current user can be added in the group according to its distance to the others already in it
for(let l = 0; l < groups[i].length; l++) {
let userTotest = groups[i][l];
if(computeDistance(dist.first, userTotest) <= MIN_DISTANCE) {
groups[i].push(dist.first);
alreadyInAGroup[dist.first.id] = true;
break;
}
}
} else {
groups[i].push(dist.first);
alreadyInAGroup[dist.first.id] = true;
}
}
if(groups[i].length === MAX_PER_GROUP) {
i++; // on créé un nouveau groupe
if(i > (NB_USERS / MAX_PER_GROUP)) {
console.log('There is no room left for user ID : ' + dist.second.id + ' !');
break;
}
continue;
}
if(groups[i].indexOf(dist.second) === -1 && typeof alreadyInAGroup[dist.second.id] === 'undefined') {
if(groups[i].length > 1) {
// if group is not empty we check current user can be added in the group according to its distance to the others already in it
for(let l = 0; l < groups[i].length; l++) {
let userTotest = groups[i][l];
if(computeDistance(dist.second, userTotest) <= MIN_DISTANCE) {
groups[i].push(dist.second);
alreadyInAGroup[dist.second.id] = true;
break;
}
}
} else {
groups[i].push(dist.second);
alreadyInAGroup[dist.second.id] = true;
}
}
}
}
return groups;
};
let distances = getDistanceOfEachUser(users);
// ordonner par distance pour prioriser l'association en groupe des utilisateurs les plus proches
distances.sort(compareDistances);
let groups = createGroups(distances);
// Compute distance between each user of a already existing group
let checkGroupDistance = function(groups) {
for(let i = 0; i < groups.length; i++) {
let group = groups[i];
group.forEach(function(user1, key1) {
group.forEach(function(user2, key2) {
if(key1 < key2) {
let distance = computeDistance(user1, user2);
if(distance > MIN_DISTANCE) {
// TODO : message a user1 et user2
}
}
});
});
}
};
console.log(users);
console.log(distances);
console.log(groups);

View file

@ -1,3 +1,15 @@
// lib/server.ts // lib/server.ts
import App from "./src/App"; import App from "./src/App";
App.listen(8080, () => console.log(`WorkAdventure starting on port 8080!`)) import grpc from "grpc";
import { roomManager } from "./src/RoomManager";
import { IRoomManagerServer, RoomManagerService } from "./src/Messages/generated/messages_grpc_pb";
import { HTTP_PORT, GRPC_PORT } from "./src/Enum/EnvironmentVariable";
App.listen(HTTP_PORT, () => console.log(`WorkAdventure HTTP API starting on port %d!`, HTTP_PORT));
const server = new grpc.Server();
server.addService<IRoomManagerServer>(RoomManagerService, roomManager);
server.bind(`0.0.0.0:${GRPC_PORT}`, grpc.ServerCredentials.createInsecure());
server.start();
console.log("WorkAdventure HTTP/2 API starting on port %d!", GRPC_PORT);

View file

@ -1,29 +1,16 @@
// lib/app.ts // lib/app.ts
import {IoSocketController} from "./Controller/IoSocketController"; //TODO fix import by "_Controller/..." import { PrometheusController } from "./Controller/PrometheusController";
import {AuthenticateController} from "./Controller/AuthenticateController"; //TODO fix import by "_Controller/..." import { DebugController } from "./Controller/DebugController";
import {MapController} from "./Controller/MapController"; import { App as uwsApp } from "./Server/sifrr.server";
import {PrometheusController} from "./Controller/PrometheusController";
import {FileController} from "./Controller/FileController";
import {DebugController} from "./Controller/DebugController";
import {App as uwsApp} from "./Server/sifrr.server";
class App { class App {
public app: uwsApp; public app: uwsApp;
public ioSocketController: IoSocketController;
public authenticateController: AuthenticateController;
public fileController: FileController;
public mapController: MapController;
public prometheusController: PrometheusController; public prometheusController: PrometheusController;
private debugController: DebugController; private debugController: DebugController;
constructor() { constructor() {
this.app = new uwsApp(); this.app = new uwsApp();
//create socket controllers
this.ioSocketController = new IoSocketController(this.app);
this.authenticateController = new AuthenticateController(this.app);
this.fileController = new FileController(this.app);
this.mapController = new MapController(this.app);
this.prometheusController = new PrometheusController(this.app); this.prometheusController = new PrometheusController(this.app);
this.debugController = new DebugController(this.app); this.debugController = new DebugController(this.app);
} }

View file

@ -1,135 +0,0 @@
import { v4 } from 'uuid';
import {HttpRequest, HttpResponse, TemplatedApp} from "uWebSockets.js";
import {BaseController} from "./BaseController";
import {adminApi} from "../Services/AdminApi";
import {jwtTokenManager} from "../Services/JWTTokenManager";
import {parse} from "query-string";
export interface TokenInterface {
userUuid: string
}
export class AuthenticateController extends BaseController {
constructor(private App : TemplatedApp) {
super();
this.register();
this.verify();
this.anonymLogin();
}
//Try to login with an admin token
private register(){
this.App.options("/register", (res: HttpResponse, req: HttpRequest) => {
this.addCorsHeaders(res);
res.end();
});
this.App.post("/register", (res: HttpResponse, req: HttpRequest) => {
(async () => {
res.onAborted(() => {
console.warn('Login request was aborted');
})
const param = await res.json();
//todo: what to do if the organizationMemberToken is already used?
const organizationMemberToken:string|null = param.organizationMemberToken;
try {
if (typeof organizationMemberToken != 'string') throw new Error('No organization token');
const data = await adminApi.fetchMemberDataByToken(organizationMemberToken);
const userUuid = data.userUuid;
const organizationSlug = data.organizationSlug;
const worldSlug = data.worldSlug;
const roomSlug = data.roomSlug;
const mapUrlStart = data.mapUrlStart;
const textures = data.textures;
const authToken = jwtTokenManager.createJWTToken(userUuid);
res.writeStatus("200 OK");
this.addCorsHeaders(res);
res.end(JSON.stringify({
authToken,
userUuid,
organizationSlug,
worldSlug,
roomSlug,
mapUrlStart,
textures
}));
} catch (e) {
console.error("An error happened", e)
res.writeStatus(e.status || "500 Internal Server Error");
this.addCorsHeaders(res);
res.end('An error happened');
}
})();
});
}
private verify(){
this.App.options("/verify", (res: HttpResponse, req: HttpRequest) => {
this.addCorsHeaders(res);
res.end();
});
this.App.get("/verify", (res: HttpResponse, req: HttpRequest) => {
(async () => {
const query = parse(req.getQuery());
res.onAborted(() => {
console.warn('verify request was aborted');
})
try {
await jwtTokenManager.getUserUuidFromToken(query.token as string);
} catch (e) {
res.writeStatus("400 Bad Request");
this.addCorsHeaders(res);
res.end(JSON.stringify({
"success": false,
"message": "Invalid JWT token"
}));
return;
}
res.writeStatus("200 OK");
this.addCorsHeaders(res);
res.end(JSON.stringify({
"success": true
}));
})();
});
}
//permit to login on application. Return token to connect on Websocket IO.
private anonymLogin(){
this.App.options("/anonymLogin", (res: HttpResponse, req: HttpRequest) => {
this.addCorsHeaders(res);
res.end();
});
this.App.post("/anonymLogin", (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn('Login request was aborted');
})
const userUuid = v4();
const authToken = jwtTokenManager.createJWTToken(userUuid);
res.writeStatus("200 OK");
this.addCorsHeaders(res);
res.end(JSON.stringify({
authToken,
userUuid,
}));
});
}
}

View file

@ -1,11 +1,9 @@
import {HttpRequest, HttpResponse} from "uWebSockets.js"; import { HttpResponse } from "uWebSockets.js";
import {ADMIN_API_TOKEN} from "../Enum/EnvironmentVariable";
export class BaseController { export class BaseController {
protected addCorsHeaders(res: HttpResponse): void { protected addCorsHeaders(res: HttpResponse): void {
res.writeHeader('access-control-allow-headers', 'Origin, X-Requested-With, Content-Type, Accept'); res.writeHeader("access-control-allow-headers", "Origin, X-Requested-With, Content-Type, Accept");
res.writeHeader('access-control-allow-methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.writeHeader("access-control-allow-methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE");
res.writeHeader('access-control-allow-origin', '*'); res.writeHeader("access-control-allow-origin", "*");
} }
} }

View file

@ -1,45 +1,68 @@
import {ADMIN_API_TOKEN} from "../Enum/EnvironmentVariable"; import { ADMIN_API_TOKEN } from "../Enum/EnvironmentVariable";
import {IoSocketController} from "_Controller/IoSocketController"; import { stringify } from "circular-json";
import {stringify} from "circular-json"; import { HttpRequest, HttpResponse } from "uWebSockets.js";
import {HttpRequest, HttpResponse} from "uWebSockets.js"; import { parse } from "query-string";
import { parse } from 'query-string'; import { App } from "../Server/sifrr.server";
import {App} from "../Server/sifrr.server"; import { socketManager } from "../Services/SocketManager";
import {socketManager} from "../Services/SocketManager";
export class DebugController { export class DebugController {
constructor(private App : App) { constructor(private App: App) {
this.getDump(); this.getDump();
} }
getDump() {
getDump(){
this.App.get("/dump", (res: HttpResponse, req: HttpRequest) => { this.App.get("/dump", (res: HttpResponse, req: HttpRequest) => {
const query = parse(req.getQuery()); (async () => {
const query = parse(req.getQuery());
if (query.token !== ADMIN_API_TOKEN) { if (ADMIN_API_TOKEN === "") {
return res.status(401).send('Invalid token sent!'); return res.writeStatus("401 Unauthorized").end("No token configured!");
}
return res.writeStatus('200 OK').writeHeader('Content-Type', 'application/json').end(stringify(
socketManager.getWorlds(),
(key: unknown, value: unknown) => {
if(value instanceof Map) {
const obj: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any
for (const [mapKey, mapValue] of value.entries()) {
obj[mapKey] = mapValue;
}
return obj;
} else if(value instanceof Set) {
const obj: Array<unknown> = [];
for (const [setKey, setValue] of value.entries()) {
obj.push(setValue);
}
return obj;
} else {
return value;
}
} }
)); if (query.token !== ADMIN_API_TOKEN) {
return res.writeStatus("401 Unauthorized").end("Invalid token sent!");
}
return res
.writeStatus("200 OK")
.writeHeader("Content-Type", "application/json")
.end(
stringify(
await Promise.all(socketManager.getWorlds().values()),
(key: unknown, value: unknown) => {
if (key === "listeners") {
return "Listeners";
}
if (key === "socket") {
return "Socket";
}
if (key === "batchedMessages") {
return "BatchedMessages";
}
if (value instanceof Map) {
const obj: { [key: string | number]: unknown } = {};
for (const [mapKey, mapValue] of value.entries()) {
if (typeof mapKey === "number" || typeof mapKey === "string") {
obj[mapKey] = mapValue;
}
}
return obj;
} else if (value instanceof Set) {
const obj: Array<unknown> = [];
for (const [setKey, setValue] of value.entries()) {
obj.push(setValue);
}
return obj;
} else {
return value;
}
}
)
);
})().catch((e) => {
console.error(e);
res.writeStatus("500");
res.end("An error occurred");
});
}); });
} }
} }

View file

@ -1,331 +0,0 @@
import {CharacterLayer, ExSocketInterface} from "../Model/Websocket/ExSocketInterface"; //TODO fix import by "_Model/.."
import {GameRoomPolicyTypes} from "../Model/GameRoom";
import {PointInterface} from "../Model/Websocket/PointInterface";
import {
SetPlayerDetailsMessage,
SubMessage,
BatchMessage,
ItemEventMessage,
ViewportMessage,
ClientToServerMessage,
SilentMessage,
WebRtcSignalToServerMessage,
PlayGlobalMessage,
ReportPlayerMessage,
QueryJitsiJwtMessage
} from "../Messages/generated/messages_pb";
import {UserMovesMessage} from "../Messages/generated/messages_pb";
import {TemplatedApp} from "uWebSockets.js"
import {parse} from "query-string";
import {jwtTokenManager} from "../Services/JWTTokenManager";
import {adminApi, CharacterTexture, FetchMemberDataByUuidResponse} from "../Services/AdminApi";
import {SocketManager, socketManager} from "../Services/SocketManager";
import {emitInBatch} from "../Services/IoSocketHelpers";
import {clientEventsEmitter} from "../Services/ClientEventsEmitter";
import {ADMIN_API_TOKEN, ADMIN_API_URL, SOCKET_IDLE_TIMER} from "../Enum/EnvironmentVariable";
export class IoSocketController {
private nextUserId: number = 1;
constructor(private readonly app: TemplatedApp) {
this.ioConnection();
this.adminRoomSocket();
}
adminRoomSocket() {
this.app.ws('/admin/rooms', {
upgrade: (res, req, context) => {
const query = parse(req.getQuery());
const websocketKey = req.getHeader('sec-websocket-key');
const websocketProtocol = req.getHeader('sec-websocket-protocol');
const websocketExtensions = req.getHeader('sec-websocket-extensions');
const token = query.token;
if (token !== ADMIN_API_TOKEN) {
console.log('Admin access refused for token: '+token)
res.writeStatus("401 Unauthorized").end('Incorrect token');
return;
}
const roomId = query.roomId as string;
res.upgrade(
{roomId},
websocketKey, websocketProtocol, websocketExtensions, context,
);
},
open: (ws) => {
console.log('Admin socket connect for room: '+ws.roomId);
ws.send('Data:'+JSON.stringify(socketManager.getAdminSocketDataFor(ws.roomId as string)));
ws.clientJoinCallback = (clientUUid: string, roomId: string) => {
const wsroomId = ws.roomId as string;
if(wsroomId === roomId) {
ws.send('MemberJoin:'+clientUUid+';'+roomId);
}
};
ws.clientLeaveCallback = (clientUUid: string, roomId: string) => {
const wsroomId = ws.roomId as string;
if(wsroomId === roomId) {
ws.send('MemberLeave:'+clientUUid+';'+roomId);
}
};
clientEventsEmitter.registerToClientJoin(ws.clientJoinCallback);
clientEventsEmitter.registerToClientLeave(ws.clientLeaveCallback);
},
message: (ws, arrayBuffer, isBinary): void => {
try {
//TODO refactor message type and data
const message: {event: string, message: {type: string, message: unknown, userUuid: string}} =
JSON.parse(new TextDecoder("utf-8").decode(new Uint8Array(arrayBuffer)));
if(message.event === 'user-message') {
const messageToEmit = (message.message as { message: string, type: string, userUuid: string });
switch (message.message.type) {
case 'ban': {
socketManager.emitSendUserMessage(messageToEmit);
break;
}
case 'banned': {
const socketUser = socketManager.emitSendUserMessage(messageToEmit);
setTimeout(() => {
socketUser.close();
}, 10000);
break;
}
default: {
break;
}
}
}
}catch (err) {
console.error(err);
}
},
close: (ws, code, message) => {
//todo make sure this code unregister the right listeners
clientEventsEmitter.unregisterFromClientJoin(ws.clientJoinCallback);
clientEventsEmitter.unregisterFromClientLeave(ws.clientLeaveCallback);
}
})
}
ioConnection() {
this.app.ws('/room', {
/* Options */
//compression: uWS.SHARED_COMPRESSOR,
idleTimeout: SOCKET_IDLE_TIMER,
maxPayloadLength: 16 * 1024 * 1024,
maxBackpressure: 65536, // Maximum 64kB of data in the buffer.
//idleTimeout: 10,
upgrade: (res, req, context) => {
//console.log('An Http connection wants to become WebSocket, URL: ' + req.getUrl() + '!');
(async () => {
/* Keep track of abortions */
const upgradeAborted = {aborted: false};
res.onAborted(() => {
/* We can simply signal that we were aborted */
upgradeAborted.aborted = true;
});
try {
const url = req.getUrl();
const query = parse(req.getQuery());
const websocketKey = req.getHeader('sec-websocket-key');
const websocketProtocol = req.getHeader('sec-websocket-protocol');
const websocketExtensions = req.getHeader('sec-websocket-extensions');
const roomId = query.roomId;
if (typeof roomId !== 'string') {
throw new Error('Undefined room ID: ');
}
const token = query.token;
const x = Number(query.x);
const y = Number(query.y);
const top = Number(query.top);
const bottom = Number(query.bottom);
const left = Number(query.left);
const right = Number(query.right);
const name = query.name;
if (typeof name !== 'string') {
throw new Error('Expecting name');
}
if (name === '') {
throw new Error('No empty name');
}
let characterLayers = query.characterLayers;
if (characterLayers === null) {
throw new Error('Expecting skin');
}
if (typeof characterLayers === 'string') {
characterLayers = [ characterLayers ];
}
const userUuid = await jwtTokenManager.getUserUuidFromToken(token);
let memberTags: string[] = [];
let memberTextures: CharacterTexture[] = [];
const room = await socketManager.getOrCreateRoom(roomId);
if(room.isFull){
throw new Error('Room is full');
}
if (ADMIN_API_URL) {
try {
const userData = await adminApi.fetchMemberDataByUuid(userUuid);
//console.log('USERDATA', userData)
memberTags = userData.tags;
memberTextures = userData.textures;
if (!room.anonymous && room.policyType === GameRoomPolicyTypes.USE_TAGS_POLICY && !room.canAccess(memberTags)) {
throw new Error('No correct tags')
}
//console.log('access granted for user '+userUuid+' and room '+roomId);
} catch (e) {
console.log('access not granted for user '+userUuid+' and room '+roomId);
console.error(e);
throw new Error('Client cannot acces this ressource.')
}
}
// Generate characterLayers objects from characterLayers string[]
const characterLayerObjs: CharacterLayer[] = SocketManager.mergeCharacterLayersAndCustomTextures(characterLayers, memberTextures);
if (upgradeAborted.aborted) {
console.log("Ouch! Client disconnected before we could upgrade it!");
/* You must not upgrade now */
return;
}
/* This immediately calls open handler, you must not use res after this call */
res.upgrade({
// Data passed here is accessible on the "websocket" socket object.
url,
token,
userUuid,
roomId,
name,
characterLayers: characterLayerObjs,
tags: memberTags,
textures: memberTextures,
position: {
x: x,
y: y,
direction: 'down',
moving: false
} as PointInterface,
viewport: {
top,
right,
bottom,
left
}
},
/* Spell these correctly */
websocketKey,
websocketProtocol,
websocketExtensions,
context);
} catch (e) {
if (e instanceof Error) {
console.log(e.message);
res.writeStatus("401 Unauthorized").end(e.message);
} else {
console.log(e);
res.writeStatus("500 Internal Server Error").end('An error occurred');
}
return;
}
})();
},
/* Handlers */
open: (ws) => {
// Let's join the room
const client = this.initClient(ws); //todo: into the upgrade instead?
socketManager.handleJoinRoom(client);
//get data information and show messages
if (ADMIN_API_URL) {
adminApi.fetchMemberDataByUuid(client.userUuid).then((res: FetchMemberDataByUuidResponse) => {
if (!res.messages) {
return;
}
res.messages.forEach((c: unknown) => {
const messageToSend = c as { type: string, message: string };
socketManager.emitSendUserMessage({
userUuid: client.userUuid,
type: messageToSend.type,
message: messageToSend.message
})
});
}).catch((err) => {
console.error('fetchMemberDataByUuid => err', err);
});
}
},
message: (ws, arrayBuffer, isBinary): void => {
const client = ws as ExSocketInterface;
const message = ClientToServerMessage.deserializeBinary(new Uint8Array(arrayBuffer));
if (message.hasViewportmessage()) {
socketManager.handleViewport(client, message.getViewportmessage() as ViewportMessage);
} else if (message.hasUsermovesmessage()) {
socketManager.handleUserMovesMessage(client, message.getUsermovesmessage() as UserMovesMessage);
} else if (message.hasSetplayerdetailsmessage()) {
socketManager.handleSetPlayerDetails(client, message.getSetplayerdetailsmessage() as SetPlayerDetailsMessage);
} else if (message.hasSilentmessage()) {
socketManager.handleSilentMessage(client, message.getSilentmessage() as SilentMessage);
} else if (message.hasItemeventmessage()) {
socketManager.handleItemEvent(client, message.getItemeventmessage() as ItemEventMessage);
} else if (message.hasWebrtcsignaltoservermessage()) {
socketManager.emitVideo(client, message.getWebrtcsignaltoservermessage() as WebRtcSignalToServerMessage);
} else if (message.hasWebrtcscreensharingsignaltoservermessage()) {
socketManager.emitScreenSharing(client, message.getWebrtcscreensharingsignaltoservermessage() as WebRtcSignalToServerMessage);
} else if (message.hasPlayglobalmessage()) {
socketManager.emitPlayGlobalMessage(client, message.getPlayglobalmessage() as PlayGlobalMessage);
} else if (message.hasReportplayermessage()){
socketManager.handleReportMessage(client, message.getReportplayermessage() as ReportPlayerMessage);
} else if (message.hasQueryjitsijwtmessage()){
socketManager.handleQueryJitsiJwtMessage(client, message.getQueryjitsijwtmessage() as QueryJitsiJwtMessage);
}
/* Ok is false if backpressure was built up, wait for drain */
//let ok = ws.send(message, isBinary);
},
drain: (ws) => {
console.log('WebSocket backpressure: ' + ws.getBufferedAmount());
},
close: (ws, code, message) => {
const Client = (ws as ExSocketInterface);
try {
Client.disconnecting = true;
//leave room
socketManager.leaveRoom(Client);
} catch (e) {
console.error('An error occurred on "disconnect"');
console.error(e);
}
}
})
}
//eslint-disable-next-line @typescript-eslint/no-explicit-any
private initClient(ws: any): ExSocketInterface {
const client : ExSocketInterface = ws;
client.userId = this.nextUserId;
this.nextUserId++;
client.userUuid = ws.userUuid;
client.token = ws.token;
client.batchedMessages = new BatchMessage();
client.batchTimeout = null;
client.emitInBatch = (payload: SubMessage): void => {
emitInBatch(client, payload);
}
client.disconnecting = false;
client.name = ws.name;
client.tags = ws.tags;
client.textures = ws.textures;
client.characterLayers = ws.characterLayers;
client.roomId = ws.roomId;
return client;
}
}

View file

@ -1,71 +0,0 @@
import {HttpRequest, HttpResponse, TemplatedApp} from "uWebSockets.js";
import {BaseController} from "./BaseController";
import {parse} from "query-string";
import {adminApi} from "../Services/AdminApi";
export class MapController extends BaseController{
constructor(private App : TemplatedApp) {
super();
this.App = App;
this.getMapUrl();
}
// Returns a map mapping map name to file name of the map
getMapUrl() {
this.App.options("/map", (res: HttpResponse, req: HttpRequest) => {
this.addCorsHeaders(res);
res.end();
});
this.App.get("/map", (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn('/map request was aborted');
})
const query = parse(req.getQuery());
if (typeof query.organizationSlug !== 'string') {
console.error('Expected organizationSlug parameter');
res.writeStatus("400 Bad request");
this.addCorsHeaders(res);
res.end("Expected organizationSlug parameter");
return;
}
if (typeof query.worldSlug !== 'string') {
console.error('Expected worldSlug parameter');
res.writeStatus("400 Bad request");
this.addCorsHeaders(res);
res.end("Expected worldSlug parameter");
return;
}
if (typeof query.roomSlug !== 'string' && query.roomSlug !== undefined) {
console.error('Expected only one roomSlug parameter');
res.writeStatus("400 Bad request");
this.addCorsHeaders(res);
res.end("Expected only one roomSlug parameter");
return;
}
(async () => {
try {
const mapDetails = await adminApi.fetchMapDetails(query.organizationSlug as string, query.worldSlug as string, query.roomSlug as string|undefined);
res.writeStatus("200 OK");
this.addCorsHeaders(res);
res.end(JSON.stringify(mapDetails));
} catch (e) {
console.error(e.message || e);
res.writeStatus("500 Internal Server Error")
this.addCorsHeaders(res);
res.end("An error occurred");
}
})();
});
}
}

View file

@ -1,20 +1,23 @@
import {App} from "../Server/sifrr.server"; import { App } from "../Server/sifrr.server";
import {HttpRequest, HttpResponse} from "uWebSockets.js"; import { HttpRequest, HttpResponse } from "uWebSockets.js";
const register = require('prom-client').register; import { register, collectDefaultMetrics } from "prom-client";
const collectDefaultMetrics = require('prom-client').collectDefaultMetrics;
export class PrometheusController { export class PrometheusController {
constructor(private App: App) { constructor(private App: App) {
collectDefaultMetrics({ collectDefaultMetrics({
timeout: 10000,
gcDurationBuckets: [0.001, 0.01, 0.1, 1, 2, 5], // These are the default buckets. gcDurationBuckets: [0.001, 0.01, 0.1, 1, 2, 5], // These are the default buckets.
}); });
this.App.get("/metrics", this.metrics.bind(this)); this.App.get("/metrics", this.metrics.bind(this));
this.App.get("/metrics.json", this.metricsAsJSON.bind(this));
} }
private metrics(res: HttpResponse, req: HttpRequest): void { private metrics(res: HttpResponse, req: HttpRequest): void {
res.writeHeader('Content-Type', register.contentType); res.writeHeader("Content-Type", register.contentType);
res.end(register.metrics()); res.end(register.metrics());
} }
private metricsAsJSON(res: HttpResponse, req: HttpRequest): void {
res.writeHeader('Content-Type', 'application/json');
res.end(JSON.stringify(register.getMetricsAsJSON()));
}
} }

View file

@ -1,28 +1,31 @@
const SECRET_KEY = process.env.SECRET_KEY || "THECODINGMACHINE_SECRET_KEY";
const URL_ROOM_STARTED = "/Floor0/floor0.json";
const MINIMUM_DISTANCE = process.env.MINIMUM_DISTANCE ? Number(process.env.MINIMUM_DISTANCE) : 64; const MINIMUM_DISTANCE = process.env.MINIMUM_DISTANCE ? Number(process.env.MINIMUM_DISTANCE) : 64;
const GROUP_RADIUS = process.env.GROUP_RADIUS ? Number(process.env.GROUP_RADIUS) : 48; const GROUP_RADIUS = process.env.GROUP_RADIUS ? Number(process.env.GROUP_RADIUS) : 48;
const ALLOW_ARTILLERY = process.env.ALLOW_ARTILLERY ? process.env.ALLOW_ARTILLERY == 'true' : false; const ALLOW_ARTILLERY = process.env.ALLOW_ARTILLERY ? process.env.ALLOW_ARTILLERY == "true" : false;
const ADMIN_API_URL = process.env.ADMIN_API_URL || ''; const ADMIN_API_URL = process.env.ADMIN_API_URL || "";
const ADMIN_API_TOKEN = process.env.ADMIN_API_TOKEN || 'myapitoken'; const ADMIN_API_TOKEN = process.env.ADMIN_API_TOKEN || "";
const MAX_USERS_PER_ROOM = parseInt(process.env.MAX_USERS_PER_ROOM || '') || 600;
const CPU_OVERHEAT_THRESHOLD = Number(process.env.CPU_OVERHEAT_THRESHOLD) || 80; const CPU_OVERHEAT_THRESHOLD = Number(process.env.CPU_OVERHEAT_THRESHOLD) || 80;
const JITSI_URL : string|undefined = (process.env.JITSI_URL === '') ? undefined : process.env.JITSI_URL; const JITSI_URL: string | undefined = process.env.JITSI_URL === "" ? undefined : process.env.JITSI_URL;
const JITSI_ISS = process.env.JITSI_ISS || ''; const JITSI_ISS = process.env.JITSI_ISS || "";
const SECRET_JITSI_KEY = process.env.SECRET_JITSI_KEY || ''; const SECRET_JITSI_KEY = process.env.SECRET_JITSI_KEY || "";
export const SOCKET_IDLE_TIMER = parseInt(process.env.SOCKET_IDLE_TIMER as string) || 30; // maximum time (in second) without activity before a socket is closed const HTTP_PORT = parseInt(process.env.HTTP_PORT || "8080") || 8080;
const GRPC_PORT = parseInt(process.env.GRPC_PORT || "50051") || 50051;
export const TURN_STATIC_AUTH_SECRET = process.env.TURN_STATIC_AUTH_SECRET || "";
export const MAX_PER_GROUP = parseInt(process.env.MAX_PER_GROUP || "4");
export const REDIS_HOST = process.env.REDIS_HOST || undefined;
export const REDIS_PORT = parseInt(process.env.REDIS_PORT || "6379") || 6379;
export const REDIS_PASSWORD = process.env.REDIS_PASSWORD || undefined;
export const STORE_VARIABLES_FOR_LOCAL_MAPS = process.env.STORE_VARIABLES_FOR_LOCAL_MAPS === "true";
export { export {
SECRET_KEY,
URL_ROOM_STARTED,
MINIMUM_DISTANCE, MINIMUM_DISTANCE,
ADMIN_API_URL, ADMIN_API_URL,
ADMIN_API_TOKEN, ADMIN_API_TOKEN,
MAX_USERS_PER_ROOM, HTTP_PORT,
GRPC_PORT,
GROUP_RADIUS, GROUP_RADIUS,
ALLOW_ARTILLERY, ALLOW_ARTILLERY,
CPU_OVERHEAT_THRESHOLD, CPU_OVERHEAT_THRESHOLD,
JITSI_URL, JITSI_URL,
JITSI_ISS, JITSI_ISS,
SECRET_JITSI_KEY SECRET_JITSI_KEY,
} };

34
back/src/Model/Admin.ts Normal file
View file

@ -0,0 +1,34 @@
import {
ServerToAdminClientMessage,
UserJoinedRoomMessage,
UserLeftRoomMessage,
} from "../Messages/generated/messages_pb";
import { AdminSocket } from "../RoomManager";
export class Admin {
public constructor(private readonly socket: AdminSocket) {}
public sendUserJoin(uuid: string, name: string, ip: string): void {
const serverToAdminClientMessage = new ServerToAdminClientMessage();
const userJoinedRoomMessage = new UserJoinedRoomMessage();
userJoinedRoomMessage.setUuid(uuid);
userJoinedRoomMessage.setName(name);
userJoinedRoomMessage.setIpaddress(ip);
serverToAdminClientMessage.setUserjoinedroom(userJoinedRoomMessage);
this.socket.write(serverToAdminClientMessage);
}
public sendUserLeft(uuid: string /*, name: string, ip: string*/): void {
const serverToAdminClientMessage = new ServerToAdminClientMessage();
const userLeftRoomMessage = new UserLeftRoomMessage();
userLeftRoomMessage.setUuid(uuid);
serverToAdminClientMessage.setUserleftroom(userLeftRoomMessage);
this.socket.write(serverToAdminClientMessage);
}
}

View file

@ -1,7 +0,0 @@
import {MessageUserPosition} from "../Model/Websocket/MessageUserPosition";
export interface Distance {
distance: number,
first: MessageUserPosition,
second: MessageUserPosition,
}

View file

@ -1,141 +1,226 @@
import {PointInterface} from "./Websocket/PointInterface"; import { PointInterface } from "./Websocket/PointInterface";
import {Group} from "./Group"; import { Group } from "./Group";
import {User} from "./User"; import { User, UserSocket } from "./User";
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface"; import { PositionInterface } from "_Model/PositionInterface";
import {PositionInterface} from "_Model/PositionInterface"; import {
import {Identificable} from "_Model/Websocket/Identificable"; EmoteCallback,
import {EntersCallback, LeavesCallback, MovesCallback} from "_Model/Zone"; EntersCallback,
import {PositionNotifier} from "./PositionNotifier"; LeavesCallback,
import {ViewportInterface} from "_Model/Websocket/ViewportMessage"; MovesCallback,
import {Movable} from "_Model/Movable"; PlayerDetailsUpdatedCallback,
import {extractDataFromPrivateRoomId, extractRoomSlugPublicRoomId, isRoomAnonymous} from "./RoomIdentifier"; } from "_Model/Zone";
import {arrayIntersect} from "../Services/ArrayHelper"; import { PositionNotifier } from "./PositionNotifier";
import {MAX_USERS_PER_ROOM} from "../Enum/EnvironmentVariable"; import { Movable } from "_Model/Movable";
import {
BatchToPusherMessage,
BatchToPusherRoomMessage,
EmoteEventMessage,
ErrorMessage,
JoinRoomMessage,
SetPlayerDetailsMessage,
SubToPusherRoomMessage,
VariableMessage,
VariableWithTagMessage,
ServerToClientMessage,
} from "../Messages/generated/messages_pb";
import { ProtobufUtils } from "../Model/Websocket/ProtobufUtils";
import { RoomSocket, ZoneSocket } from "src/RoomManager";
import { Admin } from "../Model/Admin";
import { adminApi } from "../Services/AdminApi";
import { isMapDetailsData, MapDetailsData } from "../Services/AdminApi/MapDetailsData";
import { ITiledMap } from "@workadventure/tiled-map-type-guard/dist";
import { mapFetcher } from "../Services/MapFetcher";
import { VariablesManager } from "../Services/VariablesManager";
import { ADMIN_API_URL } from "../Enum/EnvironmentVariable";
import { LocalUrlError } from "../Services/LocalUrlError";
import { emitErrorOnRoomSocket } from "../Services/MessageHelpers";
import { VariableError } from "../Services/VariableError";
import { isRoomRedirect } from "../Services/AdminApi/RoomRedirect";
export type ConnectCallback = (user: User, group: Group) => void; export type ConnectCallback = (user: User, group: Group) => void;
export type DisconnectCallback = (user: User, group: Group) => void; export type DisconnectCallback = (user: User, group: Group) => void;
export enum GameRoomPolicyTypes {
ANONYMUS_POLICY = 1,
MEMBERS_ONLY_POLICY,
USE_TAGS_POLICY,
}
export class GameRoom { export class GameRoom {
private readonly minDistance: number;
private readonly groupRadius: number;
// Users, sorted by ID // Users, sorted by ID
private readonly users: Map<number, User>; private readonly users = new Map<number, User>();
private readonly groups: Set<Group>; private readonly usersByUuid = new Map<string, User>();
private readonly groups = new Set<Group>();
private readonly admins = new Set<Admin>();
private readonly connectCallback: ConnectCallback; private itemsState = new Map<number, unknown>();
private readonly disconnectCallback: DisconnectCallback;
private itemsState: Map<number, unknown> = new Map<number, unknown>();
private readonly positionNotifier: PositionNotifier; private readonly positionNotifier: PositionNotifier;
public readonly roomId: string; private versionNumber: number = 1;
public readonly anonymous: boolean; private nextUserId: number = 1;
public tags: string[];
public policyType: GameRoomPolicyTypes;
public readonly roomSlug: string;
public readonly worldSlug: string = '';
public readonly organizationSlug: string = '';
constructor(roomId: string, private roomListeners: Set<RoomSocket> = new Set<RoomSocket>();
connectCallback: ConnectCallback,
disconnectCallback: DisconnectCallback,
minDistance: number,
groupRadius: number,
onEnters: EntersCallback,
onMoves: MovesCallback,
onLeaves: LeavesCallback)
{
this.roomId = roomId;
this.anonymous = isRoomAnonymous(roomId);
this.tags = [];
this.policyType = GameRoomPolicyTypes.ANONYMUS_POLICY;
if (this.anonymous) { private constructor(
this.roomSlug = extractRoomSlugPublicRoomId(this.roomId); public readonly roomUrl: string,
} else { private mapUrl: string,
const {organizationSlug, worldSlug, roomSlug} = extractDataFromPrivateRoomId(this.roomId); private readonly connectCallback: ConnectCallback,
this.roomSlug = roomSlug; private readonly disconnectCallback: DisconnectCallback,
this.organizationSlug = organizationSlug; private readonly minDistance: number,
this.worldSlug = worldSlug; private readonly groupRadius: number,
} onEnters: EntersCallback,
onMoves: MovesCallback,
onLeaves: LeavesCallback,
this.users = new Map<number, User>(); onEmote: EmoteCallback,
this.groups = new Set<Group>(); onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
this.connectCallback = connectCallback; ) {
this.disconnectCallback = disconnectCallback;
this.minDistance = minDistance;
this.groupRadius = groupRadius;
// A zone is 10 sprites wide. // A zone is 10 sprites wide.
this.positionNotifier = new PositionNotifier(320, 320, onEnters, onMoves, onLeaves); this.positionNotifier = new PositionNotifier(
320,
320,
onEnters,
onMoves,
onLeaves,
onEmote,
onPlayerDetailsUpdated
);
} }
public getGroups(): Group[] { public static async create(
return Array.from(this.groups.values()); roomUrl: string,
connectCallback: ConnectCallback,
disconnectCallback: DisconnectCallback,
minDistance: number,
groupRadius: number,
onEnters: EntersCallback,
onMoves: MovesCallback,
onLeaves: LeavesCallback,
onEmote: EmoteCallback,
onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
): Promise<GameRoom> {
const mapDetails = await GameRoom.getMapDetails(roomUrl);
const gameRoom = new GameRoom(
roomUrl,
mapDetails.mapUrl,
connectCallback,
disconnectCallback,
minDistance,
groupRadius,
onEnters,
onMoves,
onLeaves,
onEmote,
onPlayerDetailsUpdated
);
return gameRoom;
} }
public getUsers(): Map<number, User> { public getUsers(): Map<number, User> {
return this.users; return this.users;
} }
public join(socket : ExSocketInterface, userPosition: PointInterface): void { public getUserByUuid(uuid: string): User | undefined {
const user = new User(socket.userId, socket.userUuid, userPosition, false, this.positionNotifier, socket); return this.usersByUuid.get(uuid);
this.users.set(socket.userId, user); }
// Let's call update position to trigger the join / leave room public getUserById(id: number): User | undefined {
//this.updatePosition(socket, userPosition); return this.users.get(id);
this.updateUserGroup(user); }
public getUsersByUuid(uuid: string): User[] {
const userList: User[] = [];
for (const user of this.users.values()) {
if (user.uuid === uuid) {
userList.push(user);
}
}
return userList;
} }
public leave(user : Identificable){ public join(socket: UserSocket, joinRoomMessage: JoinRoomMessage): User {
const userObj = this.users.get(user.userId); const positionMessage = joinRoomMessage.getPositionmessage();
if (userObj === undefined) { if (positionMessage === undefined) {
console.warn('User ', user.userId, 'does not belong to world! It should!'); throw new Error("Missing position message");
} }
if (userObj !== undefined && typeof userObj.group !== 'undefined') { const position = ProtobufUtils.toPointInterface(positionMessage);
const user = new User(
this.nextUserId,
joinRoomMessage.getUseruuid(),
joinRoomMessage.getIpaddress(),
position,
false,
this.positionNotifier,
socket,
joinRoomMessage.getTagList(),
joinRoomMessage.getVisitcardurl(),
joinRoomMessage.getName(),
ProtobufUtils.toCharacterLayerObjects(joinRoomMessage.getCharacterlayerList()),
joinRoomMessage.getCompanion()
);
this.nextUserId++;
this.users.set(user.id, user);
this.usersByUuid.set(user.uuid, user);
this.updateUserGroup(user);
// Notify admins
for (const admin of this.admins) {
admin.sendUserJoin(user.uuid, user.name, user.IPAddress);
}
return user;
}
public leave(user: User) {
const userObj = this.users.get(user.id);
if (userObj === undefined) {
console.warn("User ", user.id, "does not belong to this game room! It should!");
}
if (userObj !== undefined && typeof userObj.group !== "undefined") {
this.leaveGroup(userObj); this.leaveGroup(userObj);
} }
this.users.delete(user.userId);
if (user.hasFollowers()) {
user.stopLeading();
}
if (user.following) {
user.following.delFollower(user);
}
this.users.delete(user.id);
this.usersByUuid.delete(user.uuid);
if (userObj !== undefined) { if (userObj !== undefined) {
this.positionNotifier.removeViewport(userObj);
this.positionNotifier.leave(userObj); this.positionNotifier.leave(userObj);
} }
}
get isFull(): boolean { // Notify admins
return this.users.size >= MAX_USERS_PER_ROOM; for (const admin of this.admins) {
admin.sendUserLeft(user.uuid /*, user.name, user.IPAddress*/);
}
} }
public isEmpty(): boolean { public isEmpty(): boolean {
return this.users.size === 0; return this.users.size === 0 && this.admins.size === 0;
} }
public updatePosition(socket : Identificable, userPosition: PointInterface): void { public updatePosition(user: User, userPosition: PointInterface): void {
const user = this.users.get(socket.userId);
if(typeof user === 'undefined') {
return;
}
user.setPosition(userPosition); user.setPosition(userPosition);
this.updateUserGroup(user); this.updateUserGroup(user);
} }
private updateUserGroup(user: User): void { updatePlayerDetails(user: User, playerDetailsMessage: SetPlayerDetailsMessage) {
user.group?.updatePosition(); if (playerDetailsMessage.getRemoveoutlinecolor()) {
user.outlineColor = undefined;
} else {
user.outlineColor = playerDetailsMessage.getOutlinecolor();
}
}
private updateUserGroup(user: User): void {
if (user.silent) { if (user.silent) {
return; return;
} }
if (user.group === undefined) { const group = user.group;
const closestItem: User | Group | null = this.searchClosestAvailableUserOrGroup(user);
if (group === undefined) {
// If the user is not part of a group: // If the user is not part of a group:
// should he join a group? // should he join a group?
@ -144,38 +229,125 @@ export class GameRoom {
return; return;
} }
const closestItem: User|Group|null = this.searchClosestAvailableUserOrGroup(user);
if (closestItem !== null) { if (closestItem !== null) {
if (closestItem instanceof Group) { if (closestItem instanceof Group) {
// Let's join the group! // Let's join the group!
closestItem.join(user); closestItem.join(user);
closestItem.setOutOfBounds(false);
} else { } else {
const closestUser : User = closestItem; const closestUser: User = closestItem;
const group: Group = new Group(this.roomId,[ const group: Group = new Group(
user, this.roomUrl,
closestUser [user, closestUser],
], this.connectCallback, this.disconnectCallback, this.positionNotifier); this.groupRadius,
this.connectCallback,
this.disconnectCallback,
this.positionNotifier
);
this.groups.add(group); this.groups.add(group);
} }
} }
} else { } else {
// If the user is part of a group: let hasKickOutSomeone = false;
// should he leave the group? let followingMembers: User[] = [];
const distance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), user.group.getPosition());
if (distance > this.groupRadius) { const previewNewGroupPosition = group.previewGroupPosition();
if (!previewNewGroupPosition) {
this.leaveGroup(user); this.leaveGroup(user);
return;
}
if (user.hasFollowers() || user.following) {
followingMembers = user.hasFollowers()
? group.getUsers().filter((currentUser) => currentUser.following === user)
: group.getUsers().filter((currentUser) => currentUser.following === user.following);
// If all group members are part of the same follow group
if (group.getUsers().length - 1 === followingMembers.length) {
let isOutOfBounds = false;
// If a follower is far away from the leader, "outOfBounds" is set to true
for (const member of followingMembers) {
const distance = GameRoom.computeDistanceBetweenPositions(
member.getPosition(),
previewNewGroupPosition
);
if (distance > this.groupRadius) {
isOutOfBounds = true;
break;
}
}
group.setOutOfBounds(isOutOfBounds);
}
}
// Check if the moving user has kicked out another user
for (const headMember of group.getGroupHeads()) {
if (!headMember.group) {
this.leaveGroup(headMember);
continue;
}
const headPosition = headMember.getPosition();
const distance = GameRoom.computeDistanceBetweenPositions(headPosition, previewNewGroupPosition);
if (distance > this.groupRadius) {
hasKickOutSomeone = true;
break;
}
}
/**
* If the current moving user has kicked another user from the radius,
* the moving user leaves the group because he is too far away.
*/
const userDistance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), previewNewGroupPosition);
if (hasKickOutSomeone && userDistance > this.groupRadius) {
if (user.hasFollowers() && group.getUsers().length === 3 && followingMembers.length === 1) {
const other = group
.getUsers()
.find((currentUser) => !currentUser.hasFollowers() && !currentUser.following);
if (other) {
this.leaveGroup(other);
}
} else if (user.hasFollowers()) {
this.leaveGroup(user);
for (const member of followingMembers) {
this.leaveGroup(member);
}
// Re-create a group with the followers
const newGroup: Group = new Group(
this.roomUrl,
[user, ...followingMembers],
this.groupRadius,
this.connectCallback,
this.disconnectCallback,
this.positionNotifier
);
this.groups.add(newGroup);
} else {
this.leaveGroup(user);
}
} }
} }
user.group?.updatePosition();
user.group?.searchForNearbyUsers();
} }
setSilent(socket: Identificable, silent: boolean) { public sendToOthersInGroupIncludingUser(user: User, message: ServerToClientMessage): void {
const user = this.users.get(socket.userId); user.group?.getUsers().forEach((currentUser: User) => {
if(typeof user === 'undefined') { if (currentUser.id !== user.id) {
console.warn('In setSilent, could not find user with ID "'+socket.userId+'" in world.'); currentUser.socket.write(message);
return; }
} });
}
setSilent(user: User, silent: boolean) {
if (user.silent === silent) { if (user.silent === silent) {
return; return;
} }
@ -186,7 +358,7 @@ export class GameRoom {
} }
if (!silent) { if (!silent) {
// If we are back to life, let's trigger a position update to see if we can join some group. // If we are back to life, let's trigger a position update to see if we can join some group.
this.updatePosition(socket, user.getPosition()); this.updatePosition(user, user.getPosition());
} }
} }
@ -202,10 +374,9 @@ export class GameRoom {
} }
group.leave(user); group.leave(user);
if (group.isEmpty()) { if (group.isEmpty()) {
this.positionNotifier.leave(group);
group.destroy(); group.destroy();
if (!this.groups.has(group)) { if (!this.groups.has(group)) {
throw new Error("Could not find group "+group.getId()+" referenced by user "+user.id+" in World."); throw new Error(`Could not find group ${group.getId()} referenced by user ${user.id} in World.`);
} }
this.groups.delete(group); this.groups.delete(group);
//todo: is the group garbage collected? //todo: is the group garbage collected?
@ -223,16 +394,15 @@ export class GameRoom {
* OR * OR
* - close enough to a group (distance <= groupRadius) * - close enough to a group (distance <= groupRadius)
*/ */
private searchClosestAvailableUserOrGroup(user: User): User|Group|null private searchClosestAvailableUserOrGroup(user: User): User | Group | null {
{
let minimumDistanceFound: number = Math.max(this.minDistance, this.groupRadius); let minimumDistanceFound: number = Math.max(this.minDistance, this.groupRadius);
let matchingItem: User | Group | null = null; let matchingItem: User | Group | null = null;
this.users.forEach((currentUser, userId) => { this.users.forEach((currentUser, userId) => {
// Let's only check users that are not part of a group // Let's only check users that are not part of a group
if (typeof currentUser.group !== 'undefined') { if (typeof currentUser.group !== "undefined") {
return; return;
} }
if(currentUser === user) { if (currentUser === user) {
return; return;
} }
if (currentUser.silent) { if (currentUser.silent) {
@ -241,7 +411,7 @@ export class GameRoom {
const distance = GameRoom.computeDistance(user, currentUser); // compute distance between peers. const distance = GameRoom.computeDistance(user, currentUser); // compute distance between peers.
if(distance <= minimumDistanceFound && distance <= this.minDistance) { if (distance <= minimumDistanceFound && distance <= this.minDistance) {
minimumDistanceFound = distance; minimumDistanceFound = distance;
matchingItem = currentUser; matchingItem = currentUser;
} }
@ -252,7 +422,7 @@ export class GameRoom {
return; return;
} }
const distance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), group.getPosition()); const distance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), group.getPosition());
if(distance <= minimumDistanceFound && distance <= this.groupRadius) { if (distance <= minimumDistanceFound && distance <= this.groupRadius) {
minimumDistanceFound = distance; minimumDistanceFound = distance;
matchingItem = group; matchingItem = group;
} }
@ -261,15 +431,15 @@ export class GameRoom {
return matchingItem; return matchingItem;
} }
public static computeDistance(user1: User, user2: User): number public static computeDistance(user1: User, user2: User): number {
{
const user1Position = user1.getPosition(); const user1Position = user1.getPosition();
const user2Position = user2.getPosition(); const user2Position = user2.getPosition();
return Math.sqrt(Math.pow(user2Position.x - user1Position.x, 2) + Math.pow(user2Position.y - user1Position.y, 2)); return Math.sqrt(
Math.pow(user2Position.x - user1Position.x, 2) + Math.pow(user2Position.y - user1Position.y, 2)
);
} }
public static computeDistanceBetweenPositions(position1: PositionInterface, position2: PositionInterface): number public static computeDistanceBetweenPositions(position1: PositionInterface, position2: PositionInterface): number {
{
return Math.sqrt(Math.pow(position2.x - position1.x, 2) + Math.pow(position2.y - position1.y, 2)); return Math.sqrt(Math.pow(position2.x - position1.x, 2) + Math.pow(position2.y - position1.y, 2));
} }
@ -281,17 +451,207 @@ export class GameRoom {
return this.itemsState; return this.itemsState;
} }
public async setVariable(name: string, value: string, user: User): Promise<void> {
// First, let's check if "user" is allowed to modify the variable.
const variableManager = await this.getVariableManager();
setViewport(socket : Identificable, viewport: ViewportInterface): Movable[] { try {
const user = this.users.get(socket.userId); const readableBy = variableManager.setVariable(name, value, user);
if(typeof user === 'undefined') {
console.warn('In setViewport, could not find user with ID "'+socket.userId+'" in world.'); // If the variable was not changed, let's not dispatch anything.
return []; if (readableBy === false) {
return;
}
// TODO: should we batch those every 100ms?
const variableMessage = new VariableWithTagMessage();
variableMessage.setName(name);
variableMessage.setValue(value);
if (readableBy) {
variableMessage.setReadableby(readableBy);
}
const subMessage = new SubToPusherRoomMessage();
subMessage.setVariablemessage(variableMessage);
const batchMessage = new BatchToPusherRoomMessage();
batchMessage.addPayload(subMessage);
// Dispatch the message on the room listeners
for (const socket of this.roomListeners) {
socket.write(batchMessage);
}
} catch (e) {
if (e instanceof VariableError) {
// Ok, we have an error setting a variable. Either the user is trying to hack the map... or the map
// is not up to date. So let's try to reload the map from scratch.
if (this.variableManagerLastLoad === undefined) {
throw e;
}
const lastLoaded = new Date().getTime() - this.variableManagerLastLoad.getTime();
if (lastLoaded < 10000) {
console.log(
'An error occurred while setting the "' +
name +
"\" variable. But we tried to reload the map less than 10 seconds ago, so let's fail."
);
// Do not try to reload if we tried to reload less than 10 seconds ago.
throw e;
}
// Reset the variable manager
this.variableManagerPromise = undefined;
this.mapPromise = undefined;
console.log(
'An error occurred while setting the "' + name + "\" variable. Let's reload the map and try again"
);
// Try to set the variable again!
await this.setVariable(name, value, user);
} else {
throw e;
}
} }
return this.positionNotifier.setViewport(user, viewport);
} }
canAccess(userTags: string[]): boolean { public addZoneListener(call: ZoneSocket, x: number, y: number): Set<Movable> {
return arrayIntersect(userTags, this.tags); return this.positionNotifier.addZoneListener(call, x, y);
}
public removeZoneListener(call: ZoneSocket, x: number, y: number): void {
return this.positionNotifier.removeZoneListener(call, x, y);
}
public adminJoin(admin: Admin): void {
this.admins.add(admin);
// Let's send all connected users
for (const user of this.users.values()) {
admin.sendUserJoin(user.uuid, user.name, user.IPAddress);
}
}
public adminLeave(admin: Admin): void {
this.admins.delete(admin);
}
public incrementVersion(): number {
this.versionNumber++;
return this.versionNumber;
}
public emitEmoteEvent(user: User, emoteEventMessage: EmoteEventMessage) {
this.positionNotifier.emitEmoteEvent(user, emoteEventMessage);
}
public addRoomListener(socket: RoomSocket) {
this.roomListeners.add(socket);
}
public removeRoomListener(socket: RoomSocket) {
this.roomListeners.delete(socket);
}
/**
* Connects to the admin server to fetch map details.
* If there is no admin server, the map details are generated by analysing the map URL (that must be in the form: /_/instance/map_url)
*/
private static async getMapDetails(roomUrl: string): Promise<MapDetailsData> {
if (!ADMIN_API_URL) {
const roomUrlObj = new URL(roomUrl);
const match = /\/_\/[^/]+\/(.+)/.exec(roomUrlObj.pathname);
if (!match) {
console.error("Unexpected room URL", roomUrl);
throw new Error('Unexpected room URL "' + roomUrl + '"');
}
const mapUrl = roomUrlObj.protocol + "//" + match[1];
return {
mapUrl,
policy_type: 1,
textures: [],
tags: [],
};
}
const result = await adminApi.fetchMapDetails(roomUrl);
if (isRoomRedirect(result)) {
console.error("Unexpected room redirect received while querying map details", result);
throw new Error("Unexpected room redirect received while querying map details");
}
return result;
}
private mapPromise: Promise<ITiledMap> | undefined;
/**
* Returns a promise to the map file.
* @throws LocalUrlError if the map we are trying to load is hosted on a local network
* @throws Error
*/
private getMap(): Promise<ITiledMap> {
if (!this.mapPromise) {
this.mapPromise = mapFetcher.fetchMap(this.mapUrl);
}
return this.mapPromise;
}
private variableManagerPromise: Promise<VariablesManager> | undefined;
private variableManagerLastLoad: Date | undefined;
private getVariableManager(): Promise<VariablesManager> {
if (!this.variableManagerPromise) {
this.variableManagerLastLoad = new Date();
this.variableManagerPromise = this.getMap()
.then((map) => {
const variablesManager = new VariablesManager(this.roomUrl, map);
return variablesManager.init();
})
.catch((e) => {
if (e instanceof LocalUrlError) {
// If we are trying to load a local URL, we are probably in test mode.
// In this case, let's bypass the server-side checks completely.
// Note: we run this message inside a setTimeout so that the room listeners can have time to connect.
setTimeout(() => {
for (const roomListener of this.roomListeners) {
emitErrorOnRoomSocket(
roomListener,
"You are loading a local map. If you use the scripting API in this map, please be aware that server-side checks and variable persistence is disabled."
);
}
}, 1000);
const variablesManager = new VariablesManager(this.roomUrl, null);
return variablesManager.init();
} else {
// An error occurred while loading the map
// Right now, let's bypass the error. In the future, we should make sure the user is aware of that
// and that he/she will act on it to fix the problem.
// Note: we run this message inside a setTimeout so that the room listeners can have time to connect.
setTimeout(() => {
for (const roomListener of this.roomListeners) {
emitErrorOnRoomSocket(
roomListener,
"Your map does not seem accessible from the WorkAdventure servers. Is it behind a firewall or a proxy? Your map should be accessible from the WorkAdventure servers. If you use the scripting API in this map, please be aware that server-side checks and variable persistence is disabled."
);
}
}, 1000);
const variablesManager = new VariablesManager(this.roomUrl, null);
return variablesManager.init();
}
});
}
return this.variableManagerPromise;
}
public async getVariablesForTags(tags: string[]): Promise<Map<string, string>> {
const variablesManager = await this.getVariableManager();
return variablesManager.getVariablesForTags(tags);
} }
} }

View file

@ -1,36 +1,38 @@
import { ConnectCallback, DisconnectCallback } from "./GameRoom"; import { ConnectCallback, DisconnectCallback, GameRoom } from "./GameRoom";
import { User } from "./User"; import { User } from "./User";
import {PositionInterface} from "_Model/PositionInterface"; import { PositionInterface } from "_Model/PositionInterface";
import {Movable} from "_Model/Movable"; import { Movable } from "_Model/Movable";
import {PositionNotifier} from "_Model/PositionNotifier"; import { PositionNotifier } from "_Model/PositionNotifier";
import {gaugeManager} from "../Services/GaugeManager"; import { MAX_PER_GROUP } from "../Enum/EnvironmentVariable";
import type { Zone } from "../Model/Zone";
export class Group implements Movable { export class Group implements Movable {
static readonly MAX_PER_GROUP = 4;
private static nextId: number = 1; private static nextId: number = 1;
private id: number; private id: number;
private users: Set<User>; private users: Set<User>;
private x!: number; private x!: number;
private y!: number; private y!: number;
private hasEditedGauge: boolean = false;
private wasDestroyed: boolean = false; private wasDestroyed: boolean = false;
private roomId: string; private roomId: string;
private currentZone: Zone | null = null;
/**
* When outOfBounds = true, a user if out of the bounds of the group BUT still considered inside it (because we are in following mode)
*/
private outOfBounds = false;
constructor(
constructor(roomId: string, users: User[], private connectCallback: ConnectCallback, private disconnectCallback: DisconnectCallback, private positionNotifier: PositionNotifier) { roomId: string,
users: User[],
private groupRadius: number,
private connectCallback: ConnectCallback,
private disconnectCallback: DisconnectCallback,
private positionNotifier: PositionNotifier
) {
this.roomId = roomId; this.roomId = roomId;
this.users = new Set<User>(); this.users = new Set<User>();
this.id = Group.nextId; this.id = Group.nextId;
Group.nextId++; Group.nextId++;
//we only send a event for prometheus metrics if the group lives more than 5 seconds
setTimeout(() => {
if (!this.wasDestroyed) {
this.hasEditedGauge = true;
gaugeManager.incNbGroupsPerRoomGauge(roomId);
}
}, 5000);
users.forEach((user: User) => { users.forEach((user: User) => {
this.join(user); this.join(user);
@ -43,7 +45,7 @@ export class Group implements Movable {
return Array.from(this.users.values()); return Array.from(this.users.values());
} }
getId() : number { getId(): number {
return this.id; return this.id;
} }
@ -53,10 +55,43 @@ export class Group implements Movable {
getPosition(): PositionInterface { getPosition(): PositionInterface {
return { return {
x: this.x, x: this.x,
y: this.y y: this.y,
}; };
} }
/**
* Returns the list of users of the group, ignoring any "followers".
* Useful to compute the position of the group if a follower is "trapped" far away from the the leader.
*/
getGroupHeads(): User[] {
return Array.from(this.users).filter((user) => user.group?.leader === user || !user.following);
}
/**
* Preview the position of the group but don't update it
*/
previewGroupPosition(): { x: number; y: number } | undefined {
const users = this.getGroupHeads();
let x = 0;
let y = 0;
if (users.length === 0) {
return undefined;
}
users.forEach((user: User) => {
const position = user.getPosition();
x += position.x;
y += position.y;
});
x /= users.length;
y /= users.length;
return { x, y };
}
/** /**
* Computes the barycenter of all users (i.e. the center of the group) * Computes the barycenter of all users (i.e. the center of the group)
*/ */
@ -64,50 +99,63 @@ export class Group implements Movable {
const oldX = this.x; const oldX = this.x;
const oldY = this.y; const oldY = this.y;
let x = 0;
let y = 0;
// Let's compute the barycenter of all users. // Let's compute the barycenter of all users.
this.users.forEach((user: User) => { const newPosition = this.previewGroupPosition();
const position = user.getPosition();
x += position.x; if (!newPosition) {
y += position.y; return;
});
x /= this.users.size;
y /= this.users.size;
if (this.users.size === 0) {
throw new Error("EMPTY GROUP FOUND!!!");
} }
const { x, y } = newPosition;
this.x = x; this.x = x;
this.y = y; this.y = y;
if (this.outOfBounds) {
return;
}
if (oldX === undefined) { if (oldX === undefined) {
this.positionNotifier.enter(this); this.currentZone = this.positionNotifier.enter(this);
} else { } else {
this.positionNotifier.updatePosition(this, {x, y}, {x: oldX, y: oldY}); this.currentZone = this.positionNotifier.updatePosition(this, { x, y }, { x: oldX, y: oldY });
}
}
searchForNearbyUsers(): void {
if (!this.currentZone) return;
for (const user of this.positionNotifier.getAllUsersInSquareAroundZone(this.currentZone)) {
// Todo: Merge two groups with a leader
if (user.group || this.isFull()) return; //we ignore users that are already in a group.
const distance = GameRoom.computeDistanceBetweenPositions(user.getPosition(), this.getPosition());
if (distance < this.groupRadius) {
this.join(user);
this.setOutOfBounds(false);
this.updatePosition();
}
} }
} }
isFull(): boolean { isFull(): boolean {
return this.users.size >= Group.MAX_PER_GROUP; return this.users.size >= MAX_PER_GROUP;
} }
isEmpty(): boolean { isEmpty(): boolean {
return this.users.size <= 1; return this.users.size <= 1;
} }
join(user: User): void join(user: User): void {
{
// Broadcast on the right event // Broadcast on the right event
this.connectCallback(user, this); this.connectCallback(user, this);
this.users.add(user); this.users.add(user);
user.group = this; user.group = this;
} }
leave(user: User): void leave(user: User): void {
{
const success = this.users.delete(user); const success = this.users.delete(user);
if (success === false) { if (success === false) {
throw new Error("Could not find user "+user.id+" in the group "+this.id); throw new Error(`Could not find user ${user.id} in the group ${this.id}`);
} }
user.group = undefined; user.group = undefined;
@ -123,16 +171,44 @@ export class Group implements Movable {
* Let's kick everybody out. * Let's kick everybody out.
* Usually used when there is only one user left. * Usually used when there is only one user left.
*/ */
destroy(): void destroy(): void {
{ if (!this.outOfBounds) {
if (this.hasEditedGauge) gaugeManager.decNbGroupsPerRoomGauge(this.roomId); this.positionNotifier.leave(this);
}
for (const user of this.users) { for (const user of this.users) {
this.leave(user); this.leave(user);
} }
this.wasDestroyed = true; this.wasDestroyed = true;
} }
get getSize(){ get getSize() {
return this.users.size; return this.users.size;
} }
/**
* A group can have at most one person leading the way in it.
*/
get leader(): User | undefined {
for (const user of this.users) {
if (user.hasFollowers()) {
return user;
}
}
return undefined;
}
setOutOfBounds(outOfBounds: boolean): void {
if (this.outOfBounds === true && outOfBounds === false) {
this.positionNotifier.enter(this);
this.outOfBounds = false;
} else if (this.outOfBounds === false && outOfBounds === true) {
this.positionNotifier.leave(this);
this.outOfBounds = true;
}
}
get getOutOfBounds() {
return this.outOfBounds;
}
} }

View file

@ -1,8 +1,8 @@
import {PositionInterface} from "_Model/PositionInterface"; import { PositionInterface } from "_Model/PositionInterface";
/** /**
* A physical object that can be placed into a Zone * A physical object that can be placed into a Zone
*/ */
export interface Movable { export interface Movable {
getPosition(): PositionInterface getPosition(): PositionInterface;
} }

View file

@ -1,4 +1,4 @@
export interface PositionInterface { export interface PositionInterface {
x: number, x: number;
y: number y: number;
} }

View file

@ -8,80 +8,67 @@
* The PositionNotifier is important for performance. It allows us to send the position of players only to a restricted * The PositionNotifier is important for performance. It allows us to send the position of players only to a restricted
* number of players around the current player. * number of players around the current player.
*/ */
import {EntersCallback, LeavesCallback, MovesCallback, Zone} from "./Zone"; import {
import {PointInterface} from "_Model/Websocket/PointInterface"; EmoteCallback,
import {User} from "_Model/User"; EntersCallback,
import {ViewportInterface} from "_Model/Websocket/ViewportMessage"; LeavesCallback,
import {Movable} from "_Model/Movable"; MovesCallback,
import {PositionInterface} from "_Model/PositionInterface"; PlayerDetailsUpdatedCallback,
Zone,
} from "./Zone";
import { Movable } from "_Model/Movable";
import { PositionInterface } from "_Model/PositionInterface";
import { ZoneSocket } from "../RoomManager";
import { User } from "../Model/User";
import { EmoteEventMessage, SetPlayerDetailsMessage } from "../Messages/generated/messages_pb";
interface ZoneDescriptor { interface ZoneDescriptor {
i: number; i: number;
j: number; j: number;
} }
export class PositionNotifier { export function* getNearbyDescriptorsMatrix(middleZoneDescriptor: ZoneDescriptor): Generator<ZoneDescriptor> {
for (let n = 0; n < 9; n++) {
const i = middleZoneDescriptor.i + ((n % 3) - 1);
const j = middleZoneDescriptor.j + (Math.floor(n / 3) - 1);
// TODO: we need a way to clean the zones if noone is in the zone and noone listening (to free memory!) if (i >= 0 && j >= 0) {
yield { i, j };
}
}
}
export class PositionNotifier {
// TODO: we need a way to clean the zones if no one is in the zone and no one listening (to free memory!)
private zones: Zone[][] = []; private zones: Zone[][] = [];
constructor(private zoneWidth: number, private zoneHeight: number, private onUserEnters: EntersCallback, private onUserMoves: MovesCallback, private onUserLeaves: LeavesCallback) { constructor(
} private zoneWidth: number,
private zoneHeight: number,
private onUserEnters: EntersCallback,
private onUserMoves: MovesCallback,
private onUserLeaves: LeavesCallback,
private onEmote: EmoteCallback,
private onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback
) {}
private getZoneDescriptorFromCoordinates(x: number, y: number): ZoneDescriptor { private getZoneDescriptorFromCoordinates(x: number, y: number): ZoneDescriptor {
return { return {
i: Math.floor(x / this.zoneWidth), i: Math.floor(x / this.zoneWidth),
j: Math.floor(y / this.zoneHeight), j: Math.floor(y / this.zoneHeight),
} };
} }
/** public enter(thing: Movable): Zone {
* Sets the viewport coordinates.
* Returns the list of new users to add
*/
public setViewport(user: User, viewport: ViewportInterface): Movable[] {
if (viewport.left > viewport.right || viewport.top > viewport.bottom) {
console.warn('Invalid viewport received: ', viewport);
return [];
}
const oldZones = user.listenedZones;
const newZones = new Set<Zone>();
const topLeftDesc = this.getZoneDescriptorFromCoordinates(viewport.left, viewport.top);
const bottomRightDesc = this.getZoneDescriptorFromCoordinates(viewport.right, viewport.bottom);
for (let j = topLeftDesc.j; j <= bottomRightDesc.j; j++) {
for (let i = topLeftDesc.i; i <= bottomRightDesc.i; i++) {
newZones.add(this.getZone(i, j));
}
}
const addedZones = [...newZones].filter(x => !oldZones.has(x));
const removedZones = [...oldZones].filter(x => !newZones.has(x));
let things: Movable[] = [];
for (const zone of addedZones) {
zone.startListening(user);
things = things.concat(Array.from(zone.getThings()))
}
for (const zone of removedZones) {
zone.stopListening(user);
}
return things;
}
public enter(thing: Movable): void {
const position = thing.getPosition(); const position = thing.getPosition();
const zoneDesc = this.getZoneDescriptorFromCoordinates(position.x, position.y); const zoneDesc = this.getZoneDescriptorFromCoordinates(position.x, position.y);
const zone = this.getZone(zoneDesc.i, zoneDesc.j); const zone = this.getZone(zoneDesc.i, zoneDesc.j);
zone.enter(thing, null, position); zone.enter(thing, null, position);
return zone;
} }
public updatePosition(thing: Movable, newPosition: PositionInterface, oldPosition: PositionInterface): void { public updatePosition(thing: Movable, newPosition: PositionInterface, oldPosition: PositionInterface): Zone {
// Did we change zone? // Did we change zone?
const oldZoneDesc = this.getZoneDescriptorFromCoordinates(oldPosition.x, oldPosition.y); const oldZoneDesc = this.getZoneDescriptorFromCoordinates(oldPosition.x, oldPosition.y);
const newZoneDesc = this.getZoneDescriptorFromCoordinates(newPosition.x, newPosition.y); const newZoneDesc = this.getZoneDescriptorFromCoordinates(newPosition.x, newPosition.y);
@ -95,9 +82,11 @@ export class PositionNotifier {
// Enter new zone // Enter new zone
newZone.enter(thing, oldZone, newPosition); newZone.enter(thing, oldZone, newPosition);
return newZone;
} else { } else {
const zone = this.getZone(oldZoneDesc.i, oldZoneDesc.j); const zone = this.getZone(oldZoneDesc.i, oldZoneDesc.j);
zone.move(thing, newPosition); zone.move(thing, newPosition);
return zone;
} }
} }
@ -108,13 +97,6 @@ export class PositionNotifier {
oldZone.leave(thing, null); oldZone.leave(thing, null);
} }
public removeViewport(user: User): void {
// Also, let's stop listening on viewports
for (const zone of user.listenedZones) {
zone.stopListening(user);
}
}
private getZone(i: number, j: number): Zone { private getZone(i: number, j: number): Zone {
let zoneRow = this.zones[j]; let zoneRow = this.zones[j];
if (zoneRow === undefined) { if (zoneRow === undefined) {
@ -124,9 +106,53 @@ export class PositionNotifier {
let zone = this.zones[j][i]; let zone = this.zones[j][i];
if (zone === undefined) { if (zone === undefined) {
zone = new Zone(this.onUserEnters, this.onUserMoves, this.onUserLeaves, i, j); zone = new Zone(
this.onUserEnters,
this.onUserMoves,
this.onUserLeaves,
this.onEmote,
this.onPlayerDetailsUpdated,
i,
j
);
this.zones[j][i] = zone; this.zones[j][i] = zone;
} }
return zone; return zone;
} }
public addZoneListener(call: ZoneSocket, x: number, y: number): Set<Movable> {
const zone = this.getZone(x, y);
zone.addListener(call);
return zone.getThings();
}
public removeZoneListener(call: ZoneSocket, x: number, y: number): void {
const zone = this.getZone(x, y);
zone.removeListener(call);
}
public emitEmoteEvent(user: User, emoteEventMessage: EmoteEventMessage) {
const zoneDesc = this.getZoneDescriptorFromCoordinates(user.getPosition().x, user.getPosition().y);
const zone = this.getZone(zoneDesc.i, zoneDesc.j);
zone.emitEmoteEvent(emoteEventMessage);
}
public *getAllUsersInSquareAroundZone(zone: Zone): Generator<User> {
const zoneDescriptor = this.getZoneDescriptorFromCoordinates(zone.x, zone.y);
for (const d of getNearbyDescriptorsMatrix(zoneDescriptor)) {
const zone = this.getZone(d.i, d.j);
for (const thing of zone.getThings()) {
if (thing instanceof User) {
yield thing;
}
}
}
}
public updatePlayerDetails(user: User, playerDetails: SetPlayerDetailsMessage) {
const position = user.getPosition();
const zoneDesc = this.getZoneDescriptorFromCoordinates(position.x, position.y);
const zone = this.getZone(zoneDesc.i, zoneDesc.j);
zone.updatePlayerDetails(user, playerDetails);
}
} }

View file

@ -1,30 +0,0 @@
//helper functions to parse room IDs
export const isRoomAnonymous = (roomID: string): boolean => {
if (roomID.startsWith('_/')) {
return true;
} else if(roomID.startsWith('@/')) {
return false;
} else {
throw new Error('Incorrect room ID: '+roomID);
}
}
export const extractRoomSlugPublicRoomId = (roomId: string): string => {
const idParts = roomId.split('/');
if (idParts.length < 3) throw new Error('Incorrect roomId: '+roomId);
return idParts.slice(2).join('/');
}
export interface extractDataFromPrivateRoomIdResponse {
organizationSlug: string;
worldSlug: string;
roomSlug: string;
}
export const extractDataFromPrivateRoomId = (roomId: string): extractDataFromPrivateRoomIdResponse => {
const idParts = roomId.split('/');
if (idParts.length < 4) throw new Error('Incorrect roomId: '+roomId);
const organizationSlug = idParts[1];
const worldSlug = idParts[2];
const roomSlug = idParts[3];
return {organizationSlug, worldSlug, roomSlug}
}

View file

@ -1,22 +1,43 @@
import { Group } from "./Group"; import { Group } from "./Group";
import { PointInterface } from "./Websocket/PointInterface"; import { PointInterface } from "./Websocket/PointInterface";
import {Zone} from "_Model/Zone"; import { Zone } from "_Model/Zone";
import {Movable} from "_Model/Movable"; import { Movable } from "_Model/Movable";
import {PositionInterface} from "_Model/PositionInterface"; import { PositionNotifier } from "_Model/PositionNotifier";
import {PositionNotifier} from "_Model/PositionNotifier"; import { ServerDuplexStream } from "grpc";
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface"; import {
BatchMessage,
CompanionMessage,
FollowAbortMessage,
FollowConfirmationMessage,
PusherToBackMessage,
ServerToClientMessage,
SetPlayerDetailsMessage,
SubMessage,
} from "../Messages/generated/messages_pb";
import { CharacterLayer } from "_Model/Websocket/CharacterLayer";
export type UserSocket = ServerDuplexStream<PusherToBackMessage, ServerToClientMessage>;
export class User implements Movable { export class User implements Movable {
public listenedZones: Set<Zone>; public listenedZones: Set<Zone>;
public group?: Group; public group?: Group;
private _following: User | undefined;
private followedBy: Set<User> = new Set<User>();
public constructor( public constructor(
public id: number, public id: number,
public uuid: string, public readonly uuid: string,
public readonly IPAddress: string,
private position: PointInterface, private position: PointInterface,
public silent: boolean, public silent: boolean,
private positionNotifier: PositionNotifier, private positionNotifier: PositionNotifier,
public readonly socket: ExSocketInterface public readonly socket: UserSocket,
public readonly tags: string[],
public readonly visitCardUrl: string | null,
public readonly name: string,
public readonly characterLayers: CharacterLayer[],
public readonly companion?: CompanionMessage,
private _outlineColor?: number | undefined
) { ) {
this.listenedZones = new Set<Zone>(); this.listenedZones = new Set<Zone>();
@ -32,4 +53,78 @@ export class User implements Movable {
this.position = position; this.position = position;
this.positionNotifier.updatePosition(this, position, oldPosition); this.positionNotifier.updatePosition(this, position, oldPosition);
} }
public addFollower(follower: User): void {
this.followedBy.add(follower);
follower._following = this;
const message = new FollowConfirmationMessage();
message.setFollower(follower.id);
message.setLeader(this.id);
const clientMessage = new ServerToClientMessage();
clientMessage.setFollowconfirmationmessage(message);
this.socket.write(clientMessage);
}
public delFollower(follower: User): void {
this.followedBy.delete(follower);
follower._following = undefined;
const message = new FollowAbortMessage();
message.setFollower(follower.id);
message.setLeader(this.id);
const clientMessage = new ServerToClientMessage();
clientMessage.setFollowabortmessage(message);
this.socket.write(clientMessage);
follower.socket.write(clientMessage);
}
public hasFollowers(): boolean {
return this.followedBy.size !== 0;
}
get following(): User | undefined {
return this._following;
}
public stopLeading(): void {
for (const follower of this.followedBy) {
this.delFollower(follower);
}
}
private batchedMessages: BatchMessage = new BatchMessage();
private batchTimeout: NodeJS.Timeout | null = null;
public emitInBatch(payload: SubMessage): void {
this.batchedMessages.addPayload(payload);
if (this.batchTimeout === null) {
this.batchTimeout = setTimeout(() => {
/*if (socket.disconnecting) {
return;
}*/
const serverToClientMessage = new ServerToClientMessage();
serverToClientMessage.setBatchmessage(this.batchedMessages);
this.socket.write(serverToClientMessage);
this.batchedMessages = new BatchMessage();
this.batchTimeout = null;
}, 100);
}
}
public set outlineColor(value: number | undefined) {
this._outlineColor = value;
const playerDetails = new SetPlayerDetailsMessage();
if (value === undefined) {
playerDetails.setRemoveoutlinecolor(true);
} else {
playerDetails.setOutlinecolor(value);
}
this.positionNotifier.updatePlayerDetails(this, playerDetails);
}
} }

View file

@ -0,0 +1,4 @@
export interface CharacterLayer {
name: string;
url: string | undefined;
}

View file

@ -1,31 +0,0 @@
import {PointInterface} from "./PointInterface";
import {Identificable} from "./Identificable";
import {ViewportInterface} from "_Model/Websocket/ViewportMessage";
import {BatchMessage, SubMessage} from "../../Messages/generated/messages_pb";
import {WebSocket} from "uWebSockets.js"
import {CharacterTexture} from "../../Services/AdminApi";
export interface CharacterLayer {
name: string,
url: string|undefined
}
export interface ExSocketInterface extends WebSocket, Identificable {
token: string;
roomId: string;
//userId: number; // A temporary (autoincremented) identifier for this user
userUuid: string; // A unique identifier for this user
name: string;
characterLayers: CharacterLayer[];
position: PointInterface;
viewport: ViewportInterface;
/**
* Pushes an event that will be sent in the next batch of events
*/
emitInBatch: (payload: SubMessage) => void;
batchedMessages: BatchMessage;
batchTimeout: NodeJS.Timeout|null;
disconnecting: boolean,
tags: string[],
textures: CharacterTexture[],
}

View file

@ -1,6 +0,0 @@
import {PositionInterface} from "_Model/PositionInterface";
export interface GroupUpdateInterface {
position: PositionInterface,
groupId: number,
}

View file

@ -1,10 +1,11 @@
import * as tg from "generic-type-guard"; import * as tg from "generic-type-guard";
export const isItemEventMessageInterface = export const isItemEventMessageInterface = new tg.IsInterface()
new tg.IsInterface().withProperties({ .withProperties({
itemId: tg.isNumber, itemId: tg.isNumber,
event: tg.isString, event: tg.isString,
state: tg.isUnknown, state: tg.isUnknown,
parameters: tg.isUnknown, parameters: tg.isUnknown,
}).get(); })
.get();
export type ItemEventMessageInterface = tg.GuardedType<typeof isItemEventMessageInterface>; export type ItemEventMessageInterface = tg.GuardedType<typeof isItemEventMessageInterface>;

View file

@ -1,11 +0,0 @@
import * as tg from "generic-type-guard";
import {isPointInterface} from "./PointInterface";
import {isViewport} from "./ViewportMessage";
export const isJoinRoomMessageInterface =
new tg.IsInterface().withProperties({
roomId: tg.isString,
position: isPointInterface,
viewport: isViewport
}).get();
export type JoinRoomMessageInterface = tg.GuardedType<typeof isJoinRoomMessageInterface>;

View file

@ -1,6 +0,0 @@
import {PointInterface} from "_Model/Websocket/PointInterface";
export class MessageUserJoined {
constructor(public userId: number, public name: string, public characterLayers: string[], public position: PointInterface) {
}
}

View file

@ -1,11 +1,10 @@
import {PointInterface} from "./PointInterface"; import { PointInterface } from "./PointInterface";
export class Point implements PointInterface{ export class Point implements PointInterface {
constructor(public x : number, public y : number, public direction : string = "none", public moving : boolean = false) { constructor(
} public x: number,
} public y: number,
public direction: string = "none",
export class MessageUserPosition { public moving: boolean = false
constructor(public userId: number, public name: string, public characterLayers: string[], public position: PointInterface) { ) {}
}
} }

View file

@ -7,11 +7,12 @@ import * as tg from "generic-type-guard";
readonly moving: boolean; readonly moving: boolean;
}*/ }*/
export const isPointInterface = export const isPointInterface = new tg.IsInterface()
new tg.IsInterface().withProperties({ .withProperties({
x: tg.isNumber, x: tg.isNumber,
y: tg.isNumber, y: tg.isNumber,
direction: tg.isString, direction: tg.isString,
moving: tg.isBoolean moving: tg.isBoolean,
}).get(); })
.get();
export type PointInterface = tg.GuardedType<typeof isPointInterface>; export type PointInterface = tg.GuardedType<typeof isPointInterface>;

View file

@ -1,34 +1,33 @@
import {PointInterface} from "./PointInterface"; import { PointInterface } from "./PointInterface";
import { import {
CharacterLayerMessage, CharacterLayerMessage,
ItemEventMessage, ItemEventMessage,
PointMessage, PointMessage,
PositionMessage PositionMessage,
} from "../../Messages/generated/messages_pb"; } from "../../Messages/generated/messages_pb";
import {CharacterLayer, ExSocketInterface} from "_Model/Websocket/ExSocketInterface"; import { CharacterLayer } from "_Model/Websocket/CharacterLayer";
import Direction = PositionMessage.Direction; import Direction = PositionMessage.Direction;
import {ItemEventMessageInterface} from "_Model/Websocket/ItemEventMessage"; import { ItemEventMessageInterface } from "_Model/Websocket/ItemEventMessage";
import {PositionInterface} from "_Model/PositionInterface"; import { PositionInterface } from "_Model/PositionInterface";
export class ProtobufUtils { export class ProtobufUtils {
public static toPositionMessage(point: PointInterface): PositionMessage { public static toPositionMessage(point: PointInterface): PositionMessage {
let direction: PositionMessage.DirectionMap[keyof PositionMessage.DirectionMap]; let direction: Direction;
switch (point.direction) { switch (point.direction) {
case 'up': case "up":
direction = Direction.UP; direction = Direction.UP;
break; break;
case 'down': case "down":
direction = Direction.DOWN; direction = Direction.DOWN;
break; break;
case 'left': case "left":
direction = Direction.LEFT; direction = Direction.LEFT;
break; break;
case 'right': case "right":
direction = Direction.RIGHT; direction = Direction.RIGHT;
break; break;
default: default:
throw new Error('unexpected direction'); throw new Error("unexpected direction");
} }
const position = new PositionMessage(); const position = new PositionMessage();
@ -44,16 +43,16 @@ export class ProtobufUtils {
let direction: string; let direction: string;
switch (position.getDirection()) { switch (position.getDirection()) {
case Direction.UP: case Direction.UP:
direction = 'up'; direction = "up";
break; break;
case Direction.DOWN: case Direction.DOWN:
direction = 'down'; direction = "down";
break; break;
case Direction.LEFT: case Direction.LEFT:
direction = 'left'; direction = "left";
break; break;
case Direction.RIGHT: case Direction.RIGHT:
direction = 'right'; direction = "right";
break; break;
default: default:
throw new Error("Unexpected direction"); throw new Error("Unexpected direction");
@ -82,7 +81,7 @@ export class ProtobufUtils {
event: itemEventMessage.getEvent(), event: itemEventMessage.getEvent(),
parameters: JSON.parse(itemEventMessage.getParametersjson()), parameters: JSON.parse(itemEventMessage.getParametersjson()),
state: JSON.parse(itemEventMessage.getStatejson()), state: JSON.parse(itemEventMessage.getStatejson()),
} };
} }
public static toItemEventProtobuf(itemEvent: ItemEventMessageInterface): ItemEventMessage { public static toItemEventProtobuf(itemEvent: ItemEventMessageInterface): ItemEventMessage {
@ -96,7 +95,7 @@ export class ProtobufUtils {
} }
public static toCharacterLayerMessages(characterLayers: CharacterLayer[]): CharacterLayerMessage[] { public static toCharacterLayerMessages(characterLayers: CharacterLayer[]): CharacterLayerMessage[] {
return characterLayers.map(function(characterLayer): CharacterLayerMessage { return characterLayers.map(function (characterLayer): CharacterLayerMessage {
const message = new CharacterLayerMessage(); const message = new CharacterLayerMessage();
message.setName(characterLayer.name); message.setName(characterLayer.name);
if (characterLayer.url) { if (characterLayer.url) {
@ -105,4 +104,14 @@ export class ProtobufUtils {
return message; return message;
}); });
} }
public static toCharacterLayerObjects(characterLayers: CharacterLayerMessage[]): CharacterLayer[] {
return characterLayers.map(function (characterLayer): CharacterLayer {
const url = characterLayer.getUrl();
return {
name: characterLayer.getName(),
url: url ? url : undefined,
};
});
}
} }

View file

@ -1,8 +0,0 @@
import * as tg from "generic-type-guard";
export const isSetPlayerDetailsMessage =
new tg.IsInterface().withProperties({
name: tg.isString,
characterLayers: tg.isArray(tg.isString)
}).get();
export type SetPlayerDetailsMessage = tg.GuardedType<typeof isSetPlayerDetailsMessage>;

View file

@ -1,5 +0,0 @@
export interface UserInGroupInterface {
userId: number,
name: string,
initiator: boolean
}

View file

@ -1,18 +0,0 @@
import * as tg from "generic-type-guard";
export const isSignalData =
new tg.IsInterface().withProperties({
type: tg.isOptional(tg.isString)
}).get();
export const isWebRtcSignalMessageInterface =
new tg.IsInterface().withProperties({
receiverId: tg.isNumber,
signal: isSignalData
}).get();
export const isWebRtcScreenSharingStartMessageInterface =
new tg.IsInterface().withProperties({
userId: tg.isNumber,
roomId: tg.isString
}).get();
export type WebRtcSignalMessageInterface = tg.GuardedType<typeof isWebRtcSignalMessageInterface>;

View file

@ -1,36 +1,53 @@
import {User} from "./User"; import { User } from "./User";
import {PositionInterface} from "_Model/PositionInterface"; import { PositionInterface } from "_Model/PositionInterface";
import {Movable} from "./Movable"; import { Movable } from "./Movable";
import {Group} from "./Group"; import { Group } from "./Group";
import { ZoneSocket } from "../RoomManager";
import {
EmoteEventMessage,
SetPlayerDetailsMessage,
PlayerDetailsUpdatedMessage,
} from "../Messages/generated/messages_pb";
export type EntersCallback = (thing: Movable, listener: User) => void; export type EntersCallback = (thing: Movable, fromZone: Zone | null, listener: ZoneSocket) => void;
export type MovesCallback = (thing: Movable, position: PositionInterface, listener: User) => void; export type MovesCallback = (thing: Movable, position: PositionInterface, listener: ZoneSocket) => void;
export type LeavesCallback = (thing: Movable, listener: User) => void; export type LeavesCallback = (thing: Movable, newZone: Zone | null, listener: ZoneSocket) => void;
export type EmoteCallback = (emoteEventMessage: EmoteEventMessage, listener: ZoneSocket) => void;
export type PlayerDetailsUpdatedCallback = (
playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage,
listener: ZoneSocket
) => void;
export class Zone { export class Zone {
private things: Set<Movable> = new Set<Movable>(); private things: Set<Movable> = new Set<Movable>();
private listeners: Set<User> = new Set<User>(); private listeners: Set<ZoneSocket> = new Set<ZoneSocket>();
/** constructor(
* @param x For debugging purpose only private onEnters: EntersCallback,
* @param y For debugging purpose only private onMoves: MovesCallback,
*/ private onLeaves: LeavesCallback,
constructor(private onEnters: EntersCallback, private onMoves: MovesCallback, private onLeaves: LeavesCallback, private x: number, private y: number) { private onEmote: EmoteCallback,
} private onPlayerDetailsUpdated: PlayerDetailsUpdatedCallback,
public readonly x: number,
public readonly y: number
) {}
/** /**
* A user/thing leaves the zone * A user/thing leaves the zone
*/ */
public leave(thing: Movable, newZone: Zone|null) { public leave(thing: Movable, newZone: Zone | null) {
const result = this.things.delete(thing); const result = this.things.delete(thing);
if (!result) { if (!result) {
if (thing instanceof User) { if (thing instanceof User) {
throw new Error('Could not find user in zone '+thing.id); throw new Error(`Could not find user in zone ${thing.id}`);
} }
if (thing instanceof Group) { if (thing instanceof Group) {
throw new Error('Could not find group '+thing.getId()+' in zone ('+this.x+','+this.y+'). Position of group: ('+thing.getPosition().x+','+thing.getPosition().y+')'); throw new Error(
`Could not find group ${thing.getId()} in zone (${this.x},${this.y}). Position of group: (${
thing.getPosition().x
},${thing.getPosition().y})`
);
} }
} }
this.notifyLeft(thing, newZone); this.notifyLeft(thing, newZone);
} }
@ -38,15 +55,13 @@ export class Zone {
/** /**
* Notify listeners of this zone that this user/thing left * Notify listeners of this zone that this user/thing left
*/ */
private notifyLeft(thing: Movable, newZone: Zone|null) { private notifyLeft(thing: Movable, newZone: Zone | null) {
for (const listener of this.listeners) { for (const listener of this.listeners) {
if (listener !== thing && (newZone === null || !listener.listenedZones.has(newZone))) { this.onLeaves(thing, newZone, listener);
this.onLeaves(thing, listener);
}
} }
} }
public enter(thing: Movable, oldZone: Zone|null, position: PositionInterface) { public enter(thing: Movable, oldZone: Zone | null, position: PositionInterface) {
this.things.add(thing); this.things.add(thing);
this.notifyEnter(thing, oldZone, position); this.notifyEnter(thing, oldZone, position);
} }
@ -54,16 +69,9 @@ export class Zone {
/** /**
* Notify listeners of this zone that this user entered * Notify listeners of this zone that this user entered
*/ */
private notifyEnter(thing: Movable, oldZone: Zone|null, position: PositionInterface) { private notifyEnter(thing: Movable, oldZone: Zone | null, position: PositionInterface) {
for (const listener of this.listeners) { for (const listener of this.listeners) {
if (listener === thing) { this.onEnters(thing, oldZone, listener);
continue;
}
if (oldZone === null || !listener.listenedZones.has(oldZone)) {
this.onEnters(thing, listener);
} else {
this.onMoves(thing, position, listener);
}
} }
} }
@ -75,35 +83,38 @@ export class Zone {
} }
for (const listener of this.listeners) { for (const listener of this.listeners) {
if (listener !== thing) { //if (listener !== thing) {
this.onMoves(thing,position, listener); this.onMoves(thing, position, listener);
} //}
} }
} }
public startListening(listener: User): void {
for (const thing of this.things) {
if (thing !== listener) {
this.onEnters(thing, listener);
}
}
this.listeners.add(listener);
listener.listenedZones.add(this);
}
public stopListening(listener: User): void {
for (const thing of this.things) {
if (thing !== listener) {
this.onLeaves(thing, listener);
}
}
this.listeners.delete(listener);
listener.listenedZones.delete(this);
}
public getThings(): Set<Movable> { public getThings(): Set<Movable> {
return this.things; return this.things;
} }
public addListener(socket: ZoneSocket): void {
this.listeners.add(socket);
// TODO: here, we should trigger in some way the sending of current items
}
public removeListener(socket: ZoneSocket): void {
this.listeners.delete(socket);
}
public emitEmoteEvent(emoteEventMessage: EmoteEventMessage) {
for (const listener of this.listeners) {
this.onEmote(emoteEventMessage, listener);
}
}
public updatePlayerDetails(user: User, playerDetails: SetPlayerDetailsMessage) {
const playerDetailsUpdatedMessage = new PlayerDetailsUpdatedMessage();
playerDetailsUpdatedMessage.setUserid(user.id);
playerDetailsUpdatedMessage.setDetails(playerDetails);
for (const listener of this.listeners) {
this.onPlayerDetailsUpdated(playerDetailsUpdatedMessage, listener);
}
}
} }

324
back/src/RoomManager.ts Normal file
View file

@ -0,0 +1,324 @@
import { IRoomManagerServer } from "./Messages/generated/messages_grpc_pb";
import {
AdminGlobalMessage,
AdminMessage,
AdminPusherToBackMessage,
AdminRoomMessage,
BanMessage,
BanUserMessage,
BatchToPusherMessage,
BatchToPusherRoomMessage,
EmotePromptMessage,
FollowRequestMessage,
FollowConfirmationMessage,
FollowAbortMessage,
EmptyMessage,
ItemEventMessage,
JoinRoomMessage,
PlayGlobalMessage,
PusherToBackMessage,
QueryJitsiJwtMessage,
RefreshRoomPromptMessage,
RoomMessage,
SendUserMessage,
ServerToAdminClientMessage,
SetPlayerDetailsMessage,
SilentMessage,
UserMovesMessage,
VariableMessage,
WebRtcSignalToServerMessage,
WorldFullWarningToRoomMessage,
ZoneMessage,
} from "./Messages/generated/messages_pb";
import { sendUnaryData, ServerDuplexStream, ServerUnaryCall, ServerWritableStream } from "grpc";
import { socketManager } from "./Services/SocketManager";
import { emitError, emitErrorOnRoomSocket, emitErrorOnZoneSocket } from "./Services/MessageHelpers";
import { User, UserSocket } from "./Model/User";
import { GameRoom } from "./Model/GameRoom";
import Debug from "debug";
import { Admin } from "./Model/Admin";
const debug = Debug("roommanager");
export type AdminSocket = ServerDuplexStream<AdminPusherToBackMessage, ServerToAdminClientMessage>;
export type ZoneSocket = ServerWritableStream<ZoneMessage, BatchToPusherMessage>;
export type RoomSocket = ServerWritableStream<RoomMessage, BatchToPusherRoomMessage>;
const roomManager: IRoomManagerServer = {
joinRoom: (call: UserSocket): void => {
console.log("joinRoom called");
let room: GameRoom | null = null;
let user: User | null = null;
call.on("data", (message: PusherToBackMessage) => {
(async () => {
try {
if (room === null || user === null) {
if (message.hasJoinroommessage()) {
socketManager
.handleJoinRoom(call, message.getJoinroommessage() as JoinRoomMessage)
.then(({ room: gameRoom, user: myUser }) => {
if (call.writable) {
room = gameRoom;
user = myUser;
} else {
//Connection may have been closed before the init was finished, so we have to manually disconnect the user.
socketManager.leaveRoom(gameRoom, myUser);
}
})
.catch((e) => emitError(call, e));
} else {
throw new Error("The first message sent MUST be of type JoinRoomMessage");
}
} else {
if (message.hasJoinroommessage()) {
throw new Error("Cannot call JoinRoomMessage twice!");
} else if (message.hasUsermovesmessage()) {
socketManager.handleUserMovesMessage(
room,
user,
message.getUsermovesmessage() as UserMovesMessage
);
} else if (message.hasSilentmessage()) {
socketManager.handleSilentMessage(room, user, message.getSilentmessage() as SilentMessage);
} else if (message.hasItemeventmessage()) {
socketManager.handleItemEvent(
room,
user,
message.getItemeventmessage() as ItemEventMessage
);
} else if (message.hasVariablemessage()) {
await socketManager.handleVariableEvent(
room,
user,
message.getVariablemessage() as VariableMessage
);
} else if (message.hasWebrtcsignaltoservermessage()) {
socketManager.emitVideo(
room,
user,
message.getWebrtcsignaltoservermessage() as WebRtcSignalToServerMessage
);
} else if (message.hasWebrtcscreensharingsignaltoservermessage()) {
socketManager.emitScreenSharing(
room,
user,
message.getWebrtcscreensharingsignaltoservermessage() as WebRtcSignalToServerMessage
);
} else if (message.hasQueryjitsijwtmessage()) {
socketManager.handleQueryJitsiJwtMessage(
user,
message.getQueryjitsijwtmessage() as QueryJitsiJwtMessage
);
} else if (message.hasEmotepromptmessage()) {
socketManager.handleEmoteEventMessage(
room,
user,
message.getEmotepromptmessage() as EmotePromptMessage
);
} else if (message.hasFollowrequestmessage()) {
socketManager.handleFollowRequestMessage(
room,
user,
message.getFollowrequestmessage() as FollowRequestMessage
);
} else if (message.hasFollowconfirmationmessage()) {
socketManager.handleFollowConfirmationMessage(
room,
user,
message.getFollowconfirmationmessage() as FollowConfirmationMessage
);
} else if (message.hasFollowabortmessage()) {
socketManager.handleFollowAbortMessage(
room,
user,
message.getFollowabortmessage() as FollowAbortMessage
);
} else if (message.hasSendusermessage()) {
const sendUserMessage = message.getSendusermessage();
socketManager.handleSendUserMessage(user, sendUserMessage as SendUserMessage);
} else if (message.hasBanusermessage()) {
const banUserMessage = message.getBanusermessage();
socketManager.handlerBanUserMessage(room, user, banUserMessage as BanUserMessage);
} else if (message.hasSetplayerdetailsmessage()) {
const setPlayerDetailsMessage = message.getSetplayerdetailsmessage();
socketManager.handleSetPlayerDetails(
room,
user,
setPlayerDetailsMessage as SetPlayerDetailsMessage
);
} else {
throw new Error("Unhandled message type");
}
}
} catch (e) {
console.error(e);
emitError(call, e);
call.end();
}
})().catch((e) => console.error(e));
});
call.on("end", () => {
debug("joinRoom ended");
if (user !== null && room !== null) {
socketManager.leaveRoom(room, user);
}
call.end();
room = null;
user = null;
});
call.on("error", (err: Error) => {
console.error("An error occurred in joinRoom stream:", err);
});
},
listenZone(call: ZoneSocket): void {
debug("listenZone called");
const zoneMessage = call.request;
socketManager
.addZoneListener(call, zoneMessage.getRoomid(), zoneMessage.getX(), zoneMessage.getY())
.catch((e) => {
emitErrorOnZoneSocket(call, e);
});
call.on("cancelled", () => {
debug("listenZone cancelled");
socketManager
.removeZoneListener(call, zoneMessage.getRoomid(), zoneMessage.getX(), zoneMessage.getY())
.catch((e) => console.error(e));
call.end();
});
call.on("close", () => {
debug("listenZone connection closed");
socketManager
.removeZoneListener(call, zoneMessage.getRoomid(), zoneMessage.getX(), zoneMessage.getY())
.catch((e) => console.error(e));
}).on("error", (e) => {
console.error("An error occurred in listenZone stream:", e);
socketManager
.removeZoneListener(call, zoneMessage.getRoomid(), zoneMessage.getX(), zoneMessage.getY())
.catch((e) => console.error(e));
call.end();
});
},
listenRoom(call: RoomSocket): void {
debug("listenRoom called");
const roomMessage = call.request;
socketManager.addRoomListener(call, roomMessage.getRoomid()).catch((e) => {
emitErrorOnRoomSocket(call, e);
});
call.on("cancelled", () => {
debug("listenRoom cancelled");
socketManager.removeRoomListener(call, roomMessage.getRoomid()).catch((e) => console.error(e));
call.end();
});
call.on("close", () => {
debug("listenRoom connection closed");
socketManager.removeRoomListener(call, roomMessage.getRoomid()).catch((e) => console.error(e));
}).on("error", (e) => {
console.error("An error occurred in listenRoom stream:", e);
socketManager.removeRoomListener(call, roomMessage.getRoomid()).catch((e) => console.error(e));
call.end();
});
},
adminRoom(call: AdminSocket): void {
console.log("adminRoom called");
const admin = new Admin(call);
let room: GameRoom | null = null;
call.on("data", (message: AdminPusherToBackMessage) => {
try {
if (room === null) {
if (message.hasSubscribetoroom()) {
const roomId = message.getSubscribetoroom();
socketManager
.handleJoinAdminRoom(admin, roomId)
.then((gameRoom: GameRoom) => {
room = gameRoom;
})
.catch((e) => console.error(e));
} else {
throw new Error("The first message sent MUST be of type JoinRoomMessage");
}
}
} catch (e) {
emitError(call, e);
call.end();
}
});
call.on("end", () => {
debug("joinRoom ended");
if (room !== null) {
socketManager.leaveAdminRoom(room, admin);
}
call.end();
room = null;
});
call.on("error", (err: Error) => {
console.error("An error occurred in joinAdminRoom stream:", err);
});
},
sendAdminMessage(call: ServerUnaryCall<AdminMessage>, callback: sendUnaryData<EmptyMessage>): void {
socketManager
.sendAdminMessage(
call.request.getRoomid(),
call.request.getRecipientuuid(),
call.request.getMessage(),
call.request.getType()
)
.catch((e) => console.error(e));
callback(null, new EmptyMessage());
},
sendGlobalAdminMessage(call: ServerUnaryCall<AdminGlobalMessage>, callback: sendUnaryData<EmptyMessage>): void {
throw new Error("Not implemented yet");
// TODO
callback(null, new EmptyMessage());
},
ban(call: ServerUnaryCall<BanMessage>, callback: sendUnaryData<EmptyMessage>): void {
// FIXME Work in progress
socketManager
.banUser(call.request.getRoomid(), call.request.getRecipientuuid(), call.request.getMessage())
.catch((e) => console.error(e));
callback(null, new EmptyMessage());
},
sendAdminMessageToRoom(call: ServerUnaryCall<AdminRoomMessage>, callback: sendUnaryData<EmptyMessage>): void {
// FIXME: we could improve return message by returning a Success|ErrorMessage message
socketManager
.sendAdminRoomMessage(call.request.getRoomid(), call.request.getMessage(), call.request.getType())
.catch((e) => console.error(e));
callback(null, new EmptyMessage());
},
sendWorldFullWarningToRoom(
call: ServerUnaryCall<WorldFullWarningToRoomMessage>,
callback: sendUnaryData<EmptyMessage>
): void {
// FIXME: we could improve return message by returning a Success|ErrorMessage message
socketManager.dispatchWorldFullWarning(call.request.getRoomid()).catch((e) => console.error(e));
callback(null, new EmptyMessage());
},
sendRefreshRoomPrompt(
call: ServerUnaryCall<RefreshRoomPromptMessage>,
callback: sendUnaryData<EmptyMessage>
): void {
// FIXME: we could improve return message by returning a Success|ErrorMessage message
socketManager.dispatchRoomRefresh(call.request.getRoomid()).catch((e) => console.error(e));
callback(null, new EmptyMessage());
},
};
export { roomManager };

View file

@ -1,13 +1,13 @@
import { App as _App, AppOptions } from 'uWebSockets.js'; import { App as _App, AppOptions } from "uWebSockets.js";
import BaseApp from './baseapp'; import BaseApp from "./baseapp";
import { extend } from './utils'; import { extend } from "./utils";
import { UwsApp } from './types'; import { UwsApp } from "./types";
class App extends (<UwsApp>_App) { class App extends (<UwsApp>_App) {
constructor(options: AppOptions = {}) { constructor(options: AppOptions = {}) {
super(options); // eslint-disable-line constructor-super super(options); // eslint-disable-line constructor-super
extend(this, new BaseApp()); extend(this, new BaseApp());
} }
} }
export default App; export default App;

View file

@ -1,116 +1,111 @@
import { Readable } from 'stream'; /* eslint-disable */
import { us_listen_socket_close, TemplatedApp, HttpResponse, HttpRequest } from 'uWebSockets.js';
import formData from './formdata'; import { Readable } from "stream";
import { stob } from './utils'; import { us_listen_socket_close, TemplatedApp, HttpResponse, HttpRequest } from "uWebSockets.js";
import { Handler } from './types';
import {join} from "path";
const contTypes = ['application/x-www-form-urlencoded', 'multipart/form-data']; import formData from "./formdata";
import { stob } from "./utils";
import { Handler } from "./types";
import { join } from "path";
const contTypes = ["application/x-www-form-urlencoded", "multipart/form-data"];
const noOp = () => true; const noOp = () => true;
const handleBody = (res: HttpResponse, req: HttpRequest) => { const handleBody = (res: HttpResponse, req: HttpRequest) => {
const contType = req.getHeader('content-type'); const contType = req.getHeader("content-type");
res.bodyStream = function() { res.bodyStream = function () {
const stream = new Readable(); const stream = new Readable();
stream._read = noOp; // eslint-disable-line @typescript-eslint/unbound-method stream._read = noOp; // eslint-disable-line @typescript-eslint/unbound-method
this.onData((ab: ArrayBuffer, isLast: boolean) => { this.onData((ab: ArrayBuffer, isLast: boolean) => {
// uint and then slicing is bit faster than slice and then uint // uint and then slicing is bit faster than slice and then uint
stream.push(new Uint8Array(ab.slice((ab as any).byteOffset, ab.byteLength))); // eslint-disable-line @typescript-eslint/no-explicit-any stream.push(new Uint8Array(ab.slice((ab as any).byteOffset, ab.byteLength))); // eslint-disable-line @typescript-eslint/no-explicit-any
if (isLast) { if (isLast) {
stream.push(null); stream.push(null);
} }
}); });
return stream; return stream;
}; };
res.body = () => stob(res.bodyStream()); res.body = () => stob(res.bodyStream());
if (contType.includes('application/json')) if (contType.includes("application/json")) res.json = async () => JSON.parse(await res.body());
res.json = async () => JSON.parse(await res.body()); if (contTypes.map((t) => contType.includes(t)).includes(true)) res.formData = formData.bind(res, contType);
if (contTypes.map(t => contType.includes(t)).includes(true))
res.formData = formData.bind(res, contType);
}; };
class BaseApp { class BaseApp {
_sockets = new Map(); _sockets = new Map();
ws!: TemplatedApp['ws']; ws!: TemplatedApp["ws"];
get!: TemplatedApp['get']; get!: TemplatedApp["get"];
_post!: TemplatedApp['post']; _post!: TemplatedApp["post"];
_put!: TemplatedApp['put']; _put!: TemplatedApp["put"];
_patch!: TemplatedApp['patch']; _patch!: TemplatedApp["patch"];
_listen!: TemplatedApp['listen']; _listen!: TemplatedApp["listen"];
post(pattern: string, handler: Handler) { post(pattern: string, handler: Handler) {
if (typeof handler !== 'function') if (typeof handler !== "function") throw Error(`handler should be a function, given ${typeof handler}.`);
throw Error(`handler should be a function, given ${typeof handler}.`); this._post(pattern, (res, req) => {
this._post(pattern, (res, req) => { handleBody(res, req);
handleBody(res, req); handler(res, req);
handler(res, req); });
}); return this;
return this; }
}
put(pattern: string, handler: Handler) { put(pattern: string, handler: Handler) {
if (typeof handler !== 'function') if (typeof handler !== "function") throw Error(`handler should be a function, given ${typeof handler}.`);
throw Error(`handler should be a function, given ${typeof handler}.`); this._put(pattern, (res, req) => {
this._put(pattern, (res, req) => { handleBody(res, req);
handleBody(res, req);
handler(res, req); handler(res, req);
}); });
return this; return this;
} }
patch(pattern: string, handler: Handler) { patch(pattern: string, handler: Handler) {
if (typeof handler !== 'function') if (typeof handler !== "function") throw Error(`handler should be a function, given ${typeof handler}.`);
throw Error(`handler should be a function, given ${typeof handler}.`); this._patch(pattern, (res, req) => {
this._patch(pattern, (res, req) => { handleBody(res, req);
handleBody(res, req);
handler(res, req); handler(res, req);
}); });
return this; return this;
} }
listen(h: string | number, p: Function | number = noOp, cb?: Function) { listen(h: string | number, p: Function | number = noOp, cb?: Function) {
if (typeof p === 'number' && typeof h === 'string') { if (typeof p === "number" && typeof h === "string") {
this._listen(h, p, socket => { this._listen(h, p, (socket) => {
this._sockets.set(p, socket); this._sockets.set(p, socket);
if (cb === undefined) { if (cb === undefined) {
throw new Error('cb undefined'); throw new Error("cb undefined");
}
cb(socket);
});
} else if (typeof h === "number" && typeof p === "function") {
this._listen(h, (socket) => {
this._sockets.set(h, socket);
p(socket);
});
} else {
throw Error("Argument types: (host: string, port: number, cb?: Function) | (port: number, cb?: Function)");
} }
cb(socket);
}); return this;
} else if (typeof h === 'number' && typeof p === 'function') {
this._listen(h, socket => {
this._sockets.set(h, socket);
p(socket);
});
} else {
throw Error(
'Argument types: (host: string, port: number, cb?: Function) | (port: number, cb?: Function)'
);
} }
return this; close(port: null | number = null) {
} if (port) {
this._sockets.has(port) && us_listen_socket_close(this._sockets.get(port));
close(port: null | number = null) { this._sockets.delete(port);
if (port) { } else {
this._sockets.has(port) && us_listen_socket_close(this._sockets.get(port)); this._sockets.forEach((app) => {
this._sockets.delete(port); us_listen_socket_close(app);
} else { });
this._sockets.forEach(app => { this._sockets.clear();
us_listen_socket_close(app); }
}); return this;
this._sockets.clear();
} }
return this;
}
} }
export default BaseApp; export default BaseApp;

View file

@ -1,100 +1,101 @@
import { createWriteStream } from 'fs'; /* eslint-disable */
import { join, dirname } from 'path';
import Busboy from 'busboy'; import { createWriteStream } from "fs";
import mkdirp from 'mkdirp'; import { join, dirname } from "path";
import Busboy from "busboy";
import mkdirp from "mkdirp";
function formData( function formData(
contType: string, contType: string,
options: busboy.BusboyConfig & { options: busboy.BusboyConfig & {
abortOnLimit?: boolean; abortOnLimit?: boolean;
tmpDir?: string; tmpDir?: string;
onFile?: ( onFile?: (
fieldname: string, fieldname: string,
file: NodeJS.ReadableStream, file: NodeJS.ReadableStream,
filename: string, filename: string,
encoding: string, encoding: string,
mimetype: string mimetype: string
) => string; ) => string;
onField?: (fieldname: string, value: any) => void; // eslint-disable-line @typescript-eslint/no-explicit-any onField?: (fieldname: string, value: any) => void; // eslint-disable-line @typescript-eslint/no-explicit-any
filename?: (oldName: string) => string; filename?: (oldName: string) => string;
} = {} } = {}
) { ) {
console.log('Enter form data'); console.log("Enter form data");
options.headers = { options.headers = {
'content-type': contType "content-type": contType,
}; };
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const busb = new Busboy(options); const busb = new Busboy(options);
const ret = {}; const ret = {};
this.bodyStream().pipe(busb); this.bodyStream().pipe(busb);
busb.on('limit', () => { busb.on("limit", () => {
if (options.abortOnLimit) { if (options.abortOnLimit) {
reject(Error('limit')); reject(Error("limit"));
} }
});
busb.on("file", function (fieldname, file, filename, encoding, mimetype) {
const value: { filePath: string | undefined; filename: string; encoding: string; mimetype: string } = {
filename,
encoding,
mimetype,
filePath: undefined,
};
if (typeof options.tmpDir === "string") {
if (typeof options.filename === "function") filename = options.filename(filename);
const fileToSave = join(options.tmpDir, filename);
mkdirp(dirname(fileToSave));
file.pipe(createWriteStream(fileToSave));
value.filePath = fileToSave;
}
if (typeof options.onFile === "function") {
value.filePath = options.onFile(fieldname, file, filename, encoding, mimetype) || value.filePath;
}
setRetValue(ret, fieldname, value);
});
busb.on("field", function (fieldname, value) {
if (typeof options.onField === "function") options.onField(fieldname, value);
setRetValue(ret, fieldname, value);
});
busb.on("finish", function () {
resolve(ret);
});
busb.on("error", reject);
}); });
busb.on('file', function(fieldname, file, filename, encoding, mimetype) {
const value: { filePath: string|undefined, filename: string, encoding:string, mimetype: string } = {
filename,
encoding,
mimetype,
filePath: undefined
};
if (typeof options.tmpDir === 'string') {
if (typeof options.filename === 'function') filename = options.filename(filename);
const fileToSave = join(options.tmpDir, filename);
mkdirp(dirname(fileToSave));
file.pipe(createWriteStream(fileToSave));
value.filePath = fileToSave;
}
if (typeof options.onFile === 'function') {
value.filePath =
options.onFile(fieldname, file, filename, encoding, mimetype) || value.filePath;
}
setRetValue(ret, fieldname, value);
});
busb.on('field', function(fieldname, value) {
if (typeof options.onField === 'function') options.onField(fieldname, value);
setRetValue(ret, fieldname, value);
});
busb.on('finish', function() {
resolve(ret);
});
busb.on('error', reject);
});
} }
function setRetValue( function setRetValue(
ret: { [x: string]: any }, // eslint-disable-line @typescript-eslint/no-explicit-any ret: { [x: string]: any }, // eslint-disable-line @typescript-eslint/no-explicit-any
fieldname: string, fieldname: string,
value: { filename: string; encoding: string; mimetype: string; filePath?: string } | any // eslint-disable-line @typescript-eslint/no-explicit-any value: { filename: string; encoding: string; mimetype: string; filePath?: string } | any // eslint-disable-line @typescript-eslint/no-explicit-any
) { ) {
if (fieldname.endsWith('[]')) { if (fieldname.endsWith("[]")) {
fieldname = fieldname.slice(0, fieldname.length - 2); fieldname = fieldname.slice(0, fieldname.length - 2);
if (Array.isArray(ret[fieldname])) { if (Array.isArray(ret[fieldname])) {
ret[fieldname].push(value); ret[fieldname].push(value);
} else {
ret[fieldname] = [value];
}
} else { } else {
ret[fieldname] = [value]; if (Array.isArray(ret[fieldname])) {
ret[fieldname].push(value);
} else if (ret[fieldname]) {
ret[fieldname] = [ret[fieldname], value];
} else {
ret[fieldname] = value;
}
} }
} else {
if (Array.isArray(ret[fieldname])) {
ret[fieldname].push(value);
} else if (ret[fieldname]) {
ret[fieldname] = [ret[fieldname], value];
} else {
ret[fieldname] = value;
}
}
} }
export default formData; export default formData;

View file

@ -1,13 +1,13 @@
import { SSLApp as _SSLApp, AppOptions } from 'uWebSockets.js'; import { SSLApp as _SSLApp, AppOptions } from "uWebSockets.js";
import BaseApp from './baseapp'; import BaseApp from "./baseapp";
import { extend } from './utils'; import { extend } from "./utils";
import { UwsApp } from './types'; import { UwsApp } from "./types";
class SSLApp extends (<UwsApp>_SSLApp) { class SSLApp extends (<UwsApp>_SSLApp) {
constructor(options: AppOptions) { constructor(options: AppOptions) {
super(options); // eslint-disable-line constructor-super super(options); // eslint-disable-line constructor-super
extend(this, new BaseApp()); extend(this, new BaseApp());
} }
} }
export default SSLApp; export default SSLApp;

View file

@ -1,9 +1,9 @@
import { AppOptions, TemplatedApp, HttpResponse, HttpRequest } from 'uWebSockets.js'; import { AppOptions, TemplatedApp, HttpResponse, HttpRequest } from "uWebSockets.js";
export type UwsApp = { export type UwsApp = {
(options: AppOptions): TemplatedApp; (options: AppOptions): TemplatedApp;
new (options: AppOptions): TemplatedApp; new (options: AppOptions): TemplatedApp;
prototype: TemplatedApp; prototype: TemplatedApp;
}; };
export type Handler = (res: HttpResponse, req: HttpRequest) => void; export type Handler = (res: HttpResponse, req: HttpRequest) => void;

View file

@ -1,37 +1,38 @@
import { ReadStream } from 'fs'; /* eslint-disable */
function extend(who: any, from: any, overwrite = true) { // eslint-disable-line @typescript-eslint/no-explicit-any import { ReadStream } from "fs";
const ownProps = Object.getOwnPropertyNames(Object.getPrototypeOf(from)).concat(
Object.keys(from) // eslint-disable-next-line @typescript-eslint/no-explicit-any
); function extend(who: any, from: any, overwrite = true) {
ownProps.forEach(prop => { const ownProps = Object.getOwnPropertyNames(Object.getPrototypeOf(from)).concat(Object.keys(from));
if (prop === 'constructor' || from[prop] === undefined) return; ownProps.forEach((prop) => {
if (who[prop] && overwrite) { if (prop === "constructor" || from[prop] === undefined) return;
who[`_${prop}`] = who[prop]; if (who[prop] && overwrite) {
} who[`_${prop}`] = who[prop];
if (typeof from[prop] === 'function') who[prop] = from[prop].bind(who); }
else who[prop] = from[prop]; if (typeof from[prop] === "function") who[prop] = from[prop].bind(who);
}); else who[prop] = from[prop];
});
} }
function stob(stream: ReadStream): Promise<Buffer> { function stob(stream: ReadStream): Promise<Buffer> {
return new Promise(resolve => { return new Promise((resolve) => {
const buffers: Buffer[] = []; const buffers: Buffer[] = [];
stream.on('data', buffers.push.bind(buffers)); stream.on("data", buffers.push.bind(buffers));
stream.on('end', () => { stream.on("end", () => {
switch (buffers.length) { switch (buffers.length) {
case 0: case 0:
resolve(Buffer.allocUnsafe(0)); resolve(Buffer.allocUnsafe(0));
break; break;
case 1: case 1:
resolve(buffers[0]); resolve(buffers[0]);
break; break;
default: default:
resolve(Buffer.concat(buffers)); resolve(Buffer.concat(buffers));
} }
});
}); });
});
} }
export { extend, stob }; export { extend, stob };

View file

@ -1,19 +1,19 @@
import { parse } from 'query-string'; import { parse } from "query-string";
import { HttpRequest } from 'uWebSockets.js'; import { HttpRequest } from "uWebSockets.js";
import App from './server/app'; import App from "./server/app";
import SSLApp from './server/sslapp'; import SSLApp from "./server/sslapp";
import * as types from './server/types'; import * as types from "./server/types";
const getQuery = (req: HttpRequest) => { const getQuery = (req: HttpRequest) => {
return parse(req.getQuery()); return parse(req.getQuery());
}; };
export { App, SSLApp, getQuery }; export { App, SSLApp, getQuery };
export * from './server/types'; export * from "./server/types";
export default { export default {
App, App,
SSLApp, SSLApp,
getQuery, getQuery,
...types ...types,
}; };

View file

@ -1,115 +1,30 @@
import {ADMIN_API_TOKEN, ADMIN_API_URL} from "../Enum/EnvironmentVariable"; import { ADMIN_API_TOKEN, ADMIN_API_URL } from "../Enum/EnvironmentVariable";
import Axios from "axios"; import Axios from "axios";
import {v4} from "uuid"; import { isMapDetailsData, MapDetailsData } from "./AdminApi/MapDetailsData";
import { isRoomRedirect, RoomRedirect } from "./AdminApi/RoomRedirect";
export interface AdminApiData {
organizationSlug: string
worldSlug: string
roomSlug: string
mapUrlStart: string
tags: string[]
policy_type: number
userUuid: string
messages?: unknown[],
textures: CharacterTexture[]
}
export interface CharacterTexture {
id: number,
level: number,
url: string,
rights: string
}
export interface FetchMemberDataByUuidResponse {
uuid: string;
tags: string[];
textures: CharacterTexture[];
messages: unknown[];
}
class AdminApi { class AdminApi {
async fetchMapDetails(playUri: string): Promise<MapDetailsData | RoomRedirect> {
async fetchMapDetails(organizationSlug: string, worldSlug: string, roomSlug: string|undefined): Promise<AdminApiData> {
if (!ADMIN_API_URL) { if (!ADMIN_API_URL) {
return Promise.reject('No admin backoffice set!'); return Promise.reject(new Error("No admin backoffice set!"));
} }
const params: { organizationSlug: string, worldSlug: string, roomSlug?: string } = { const params: { playUri: string } = {
organizationSlug, playUri,
worldSlug
}; };
if (roomSlug) { const res = await Axios.get(ADMIN_API_URL + "/api/map", {
params.roomSlug = roomSlug; headers: { Authorization: `${ADMIN_API_TOKEN}` },
params,
});
if (!isMapDetailsData(res.data) && !isRoomRedirect(res.data)) {
console.error("Unexpected answer from the /api/map admin endpoint.", res.data);
throw new Error("Unexpected answer from the /api/map admin endpoint.");
} }
const res = await Axios.get(ADMIN_API_URL + '/api/map',
{
headers: {"Authorization": `${ADMIN_API_TOKEN}`},
params
}
)
return res.data; return res.data;
} }
async fetchMemberDataByUuid(uuid: string): Promise<FetchMemberDataByUuidResponse> {
if (!ADMIN_API_URL) {
return Promise.reject('No admin backoffice set!');
}
try {
const res = await Axios.get(ADMIN_API_URL+'/api/membership/'+uuid,
{ headers: {"Authorization" : `${ADMIN_API_TOKEN}`} }
)
return res.data;
} catch (e) {
if (e?.response?.status == 404) {
// If we get an HTTP 404, the token is invalid. Let's perform an anonymous login!
console.warn('Cannot find user with uuid "'+uuid+'". Performing an anonymous login instead.');
return {
uuid: v4(),
tags: [],
textures: [],
messages: [],
}
} else {
throw e;
}
}
}
async fetchMemberDataByToken(organizationMemberToken: string): Promise<AdminApiData> {
if (!ADMIN_API_URL) {
return Promise.reject('No admin backoffice set!');
}
//todo: this call can fail if the corresponding world is not activated or if the token is invalid. Handle that case.
const res = await Axios.get(ADMIN_API_URL+'/api/login-url/'+organizationMemberToken,
{ headers: {"Authorization" : `${ADMIN_API_TOKEN}`} }
)
return res.data;
}
async fetchCheckUserByToken(organizationMemberToken: string): Promise<AdminApiData> {
if (!ADMIN_API_URL) {
return Promise.reject('No admin backoffice set!');
}
//todo: this call can fail if the corresponding world is not activated or if the token is invalid. Handle that case.
const res = await Axios.get(ADMIN_API_URL+'/api/check-user/'+organizationMemberToken,
{ headers: {"Authorization" : `${ADMIN_API_TOKEN}`} }
)
return res.data;
}
reportPlayer(reportedUserUuid: string, reportedUserComment: string, reporterUserUuid: string) {
return Axios.post(`${ADMIN_API_URL}/api/report`, {
reportedUserUuid,
reportedUserComment,
reporterUserUuid,
},
{
headers: {"Authorization": `${ADMIN_API_TOKEN}`}
});
}
} }
export const adminApi = new AdminApi(); export const adminApi = new AdminApi();

View file

@ -0,0 +1,11 @@
import * as tg from "generic-type-guard";
export const isCharacterTexture = new tg.IsInterface()
.withProperties({
id: tg.isNumber,
level: tg.isNumber,
url: tg.isString,
rights: tg.isString,
})
.get();
export type CharacterTexture = tg.GuardedType<typeof isCharacterTexture>;

View file

@ -0,0 +1,21 @@
import * as tg from "generic-type-guard";
import { isCharacterTexture } from "./CharacterTexture";
import { isAny, isNumber } from "generic-type-guard";
/*const isNumericEnum =
<T extends { [n: number]: string }>(vs: T) =>
(v: any): v is T =>
typeof v === "number" && v in vs;*/
export const isMapDetailsData = new tg.IsInterface()
.withProperties({
mapUrl: tg.isString,
policy_type: isNumber, //isNumericEnum(GameRoomPolicyTypes),
tags: tg.isArray(tg.isString),
textures: tg.isArray(isCharacterTexture),
})
.withOptionalProperties({
roomSlug: tg.isUnion(tg.isString, tg.isNull), // deprecated
})
.get();
export type MapDetailsData = tg.GuardedType<typeof isMapDetailsData>;

View file

@ -0,0 +1,8 @@
import * as tg from "generic-type-guard";
export const isRoomRedirect = new tg.IsInterface()
.withProperties({
redirectUrl: tg.isString,
})
.get();
export type RoomRedirect = tg.GuardedType<typeof isRoomRedirect>;

View file

@ -1,3 +1,3 @@
export const arrayIntersect = (array1: string[], array2: string[]) : boolean => { export const arrayIntersect = (array1: string[], array2: string[]): boolean => {
return array1.filter(value => array2.includes(value)).length > 0; return array1.filter((value) => array2.includes(value)).length > 0;
} };

View file

@ -1,7 +1,7 @@
const EventEmitter = require('events'); import { EventEmitter } from "events";
const clientJoinEvent = 'clientJoin'; const clientJoinEvent = "clientJoin";
const clientLeaveEvent = 'clientLeave'; const clientLeaveEvent = "clientLeave";
class ClientEventsEmitter extends EventEmitter { class ClientEventsEmitter extends EventEmitter {
emitClientJoin(clientUUid: string, roomId: string): void { emitClientJoin(clientUUid: string, roomId: string): void {
@ -11,7 +11,7 @@ class ClientEventsEmitter extends EventEmitter {
emitClientLeave(clientUUid: string, roomId: string): void { emitClientLeave(clientUUid: string, roomId: string): void {
this.emit(clientLeaveEvent, clientUUid, roomId); this.emit(clientLeaveEvent, clientUUid, roomId);
} }
registerToClientJoin(callback: (clientUUid: string, roomId: string) => void): void { registerToClientJoin(callback: (clientUUid: string, roomId: string) => void): void {
this.on(clientJoinEvent, callback); this.on(clientJoinEvent, callback);
} }
@ -29,4 +29,4 @@ class ClientEventsEmitter extends EventEmitter {
} }
} }
export const clientEventsEmitter = new ClientEventsEmitter(); export const clientEventsEmitter = new ClientEventsEmitter();

View file

@ -1,6 +1,6 @@
import {CPU_OVERHEAT_THRESHOLD} from "../Enum/EnvironmentVariable"; import { CPU_OVERHEAT_THRESHOLD } from "../Enum/EnvironmentVariable";
function secNSec2ms(secNSec: Array<number>|number) { function secNSec2ms(secNSec: Array<number> | number) {
if (Array.isArray(secNSec)) { if (Array.isArray(secNSec)) {
return secNSec[0] * 1000 + secNSec[1] / 1000000; return secNSec[0] * 1000 + secNSec[1] / 1000000;
} }
@ -12,17 +12,17 @@ class CpuTracker {
private overHeating: boolean = false; private overHeating: boolean = false;
constructor() { constructor() {
let time = process.hrtime.bigint() let time = process.hrtime.bigint();
let usage = process.cpuUsage() let usage = process.cpuUsage();
setInterval(() => { setInterval(() => {
const elapTime = process.hrtime.bigint(); const elapTime = process.hrtime.bigint();
const elapUsage = process.cpuUsage(usage) const elapUsage = process.cpuUsage(usage);
usage = process.cpuUsage() usage = process.cpuUsage();
const elapTimeMS = elapTime - time; const elapTimeMS = elapTime - time;
const elapUserMS = secNSec2ms(elapUsage.user) const elapUserMS = secNSec2ms(elapUsage.user);
const elapSystMS = secNSec2ms(elapUsage.system) const elapSystMS = secNSec2ms(elapUsage.system);
this.cpuPercent = Math.round(100 * (elapUserMS + elapSystMS) / Number(elapTimeMS) * 1000000) this.cpuPercent = Math.round(((100 * (elapUserMS + elapSystMS)) / Number(elapTimeMS)) * 1000000);
time = elapTime; time = elapTime;

View file

@ -1,4 +1,4 @@
import {Counter, Gauge} from "prom-client"; import { Counter, Gauge } from "prom-client";
//this class should manage all the custom metrics used by prometheus //this class should manage all the custom metrics used by prometheus
class GaugeManager { class GaugeManager {
@ -10,29 +10,29 @@ class GaugeManager {
constructor() { constructor() {
this.nbRoomsGauge = new Gauge({ this.nbRoomsGauge = new Gauge({
name: 'workadventure_nb_rooms', name: "workadventure_nb_rooms",
help: 'Number of active rooms' help: "Number of active rooms",
}); });
this.nbClientsGauge = new Gauge({ this.nbClientsGauge = new Gauge({
name: 'workadventure_nb_sockets', name: "workadventure_nb_sockets",
help: 'Number of connected sockets', help: "Number of connected sockets",
labelNames: [ ] labelNames: [],
}); });
this.nbClientsPerRoomGauge = new Gauge({ this.nbClientsPerRoomGauge = new Gauge({
name: 'workadventure_nb_clients_per_room', name: "workadventure_nb_clients_per_room",
help: 'Number of clients per room', help: "Number of clients per room",
labelNames: [ 'room' ] labelNames: ["room"],
}); });
this.nbGroupsPerRoomCounter = new Counter({ this.nbGroupsPerRoomCounter = new Counter({
name: 'workadventure_counter_groups_per_room', name: "workadventure_counter_groups_per_room",
help: 'Counter of groups per room', help: "Counter of groups per room",
labelNames: [ 'room' ] labelNames: ["room"],
}); });
this.nbGroupsPerRoomGauge = new Gauge({ this.nbGroupsPerRoomGauge = new Gauge({
name: 'workadventure_nb_groups_per_room', name: "workadventure_nb_groups_per_room",
help: 'Number of groups per room', help: "Number of groups per room",
labelNames: [ 'room' ] labelNames: ["room"],
}); });
} }
@ -52,15 +52,6 @@ class GaugeManager {
this.nbClientsGauge.dec(); this.nbClientsGauge.dec();
this.nbClientsPerRoomGauge.dec({ room: roomId }); this.nbClientsPerRoomGauge.dec({ room: roomId });
} }
incNbGroupsPerRoomGauge(roomId: string): void {
this.nbGroupsPerRoomCounter.inc({ room: roomId })
this.nbGroupsPerRoomGauge.inc({ room: roomId })
}
decNbGroupsPerRoomGauge(roomId: string): void {
this.nbGroupsPerRoomGauge.dec({ room: roomId })
}
} }
export const gaugeManager = new GaugeManager(); export const gaugeManager = new GaugeManager();

View file

@ -1,76 +0,0 @@
import {ADMIN_API_URL, ALLOW_ARTILLERY, SECRET_KEY} from "../Enum/EnvironmentVariable";
import {uuid} from "uuidv4";
import Jwt from "jsonwebtoken";
import {TokenInterface} from "../Controller/AuthenticateController";
import {adminApi, AdminApiData} from "../Services/AdminApi";
class JWTTokenManager {
public createJWTToken(userUuid: string) {
return Jwt.sign({userUuid: userUuid}, SECRET_KEY, {expiresIn: '200d'}); //todo: add a mechanic to refresh or recreate token
}
public async getUserUuidFromToken(token: unknown): Promise<string> {
if (!token) {
throw new Error('An authentication error happened, a user tried to connect without a token.');
}
if (typeof(token) !== "string") {
throw new Error('Token is expected to be a string');
}
if(token === 'test') {
if (ALLOW_ARTILLERY) {
return uuid();
} else {
throw new Error("In order to perform a load-testing test on this environment, you must set the ALLOW_ARTILLERY environment variable to 'true'");
}
}
return new Promise<string>((resolve, reject) => {
Jwt.verify(token, SECRET_KEY, {},(err, tokenDecoded) => {
const tokenInterface = tokenDecoded as TokenInterface;
if (err) {
console.error('An authentication error happened, invalid JsonWebToken.', err);
reject(new Error('An authentication error happened, invalid JsonWebToken. ' + err.message));
return;
}
if (tokenDecoded === undefined) {
console.error('Empty token found.');
reject(new Error('Empty token found.'));
return;
}
//verify token
if (!this.isValidToken(tokenInterface)) {
reject(new Error('Authentication error, invalid token structure.'));
return;
}
if (ADMIN_API_URL) {
//verify user in admin
adminApi.fetchCheckUserByToken(tokenInterface.userUuid).then(() => {
resolve(tokenInterface.userUuid);
}).catch((err) => {
//anonymous user
if(err.response && err.response.status && err.response.status === 404){
resolve(tokenInterface.userUuid);
return;
}
reject(err);
});
} else {
resolve(tokenInterface.userUuid);
}
});
});
}
private isValidToken(token: object): token is TokenInterface {
return !(typeof((token as TokenInterface).userUuid) !== 'string');
}
}
export const jwtTokenManager = new JWTTokenManager();

View file

@ -0,0 +1 @@
export class LocalUrlError extends Error {}

View file

View file

@ -0,0 +1,70 @@
import Axios from "axios";
import ipaddr from "ipaddr.js";
import { Resolver } from "dns";
import { promisify } from "util";
import { LocalUrlError } from "./LocalUrlError";
import { ITiledMap } from "@workadventure/tiled-map-type-guard";
import { isTiledMap } from "@workadventure/tiled-map-type-guard/dist";
import { STORE_VARIABLES_FOR_LOCAL_MAPS } from "../Enum/EnvironmentVariable";
class MapFetcher {
async fetchMap(mapUrl: string): Promise<ITiledMap> {
// Before trying to make the query, let's verify the map is actually on the open internet (and not a local test map)
if ((await this.isLocalUrl(mapUrl)) && !STORE_VARIABLES_FOR_LOCAL_MAPS) {
throw new LocalUrlError('URL for map "' + mapUrl + '" targets a local map');
}
// Note: mapUrl is provided by the client. A possible attack vector would be to use a rogue DNS server that
// returns local URLs. Alas, Axios cannot pin a URL to a given IP. So "isLocalUrl" and Axios.get could potentially
// target to different servers (and one could trick Axios.get into loading resources on the internal network
// despite isLocalUrl checking that.
// We can deem this problem not that important because:
// - We make sure we are only passing "GET" requests
// - The result of the query is never displayed to the end user
const res = await Axios.get(mapUrl, {
maxContentLength: 50 * 1024 * 1024, // Max content length: 50MB. Maps should not be bigger
timeout: 10000, // Timeout after 10 seconds
});
if (!isTiledMap(res.data)) {
//TODO fixme
//throw new Error("Invalid map format for map " + mapUrl);
console.error("Invalid map format for map " + mapUrl);
}
/* eslint-disable-next-line @typescript-eslint/no-unsafe-return */
return res.data;
}
/**
* Returns true if the domain name is localhost of *.localhost
* Returns true if the domain name resolves to an IP address that is "private" (like 10.x.x.x or 192.168.x.x)
*
* @private
*/
async isLocalUrl(url: string): Promise<boolean> {
const urlObj = new URL(url);
if (urlObj.hostname === "localhost" || urlObj.hostname.endsWith(".localhost")) {
return true;
}
let addresses = [];
if (!ipaddr.isValid(urlObj.hostname)) {
const resolver = new Resolver();
addresses = await promisify(resolver.resolve).bind(resolver)(urlObj.hostname);
} else {
addresses = [urlObj.hostname];
}
for (const address of addresses) {
const addr = ipaddr.parse(address);
if (addr.range() !== "unicast") {
return true;
}
}
return false;
}
}
export const mapFetcher = new MapFetcher();

View file

@ -0,0 +1,74 @@
import {
BatchMessage,
BatchToPusherMessage,
BatchToPusherRoomMessage,
ErrorMessage,
ServerToClientMessage,
SubToPusherMessage,
SubToPusherRoomMessage,
} from "../Messages/generated/messages_pb";
import { UserSocket } from "_Model/User";
import { RoomSocket, ZoneSocket } from "../RoomManager";
function getMessageFromError(error: unknown): string {
if (error instanceof Error) {
return error.message;
} else if (typeof error === "string") {
return error;
} else {
return "Unknown error";
}
}
export function emitError(Client: UserSocket, error: unknown): void {
const message = getMessageFromError(error);
const errorMessage = new ErrorMessage();
errorMessage.setMessage(message);
const serverToClientMessage = new ServerToClientMessage();
serverToClientMessage.setErrormessage(errorMessage);
//if (!Client.disconnecting) {
Client.write(serverToClientMessage);
//}
console.warn(message);
}
export function emitErrorOnRoomSocket(Client: RoomSocket, error: unknown): void {
console.error(error);
const message = getMessageFromError(error);
const errorMessage = new ErrorMessage();
errorMessage.setMessage(message);
const subToPusherRoomMessage = new SubToPusherRoomMessage();
subToPusherRoomMessage.setErrormessage(errorMessage);
const batchToPusherMessage = new BatchToPusherRoomMessage();
batchToPusherMessage.addPayload(subToPusherRoomMessage);
//if (!Client.disconnecting) {
Client.write(batchToPusherMessage);
//}
console.warn(message);
}
export function emitErrorOnZoneSocket(Client: ZoneSocket, error: unknown): void {
console.error(error);
const message = getMessageFromError(error);
const errorMessage = new ErrorMessage();
errorMessage.setMessage(message);
const subToPusherMessage = new SubToPusherMessage();
subToPusherMessage.setErrormessage(errorMessage);
const batchToPusherMessage = new BatchToPusherMessage();
batchToPusherMessage.addPayload(subToPusherMessage);
//if (!Client.disconnecting) {
Client.write(batchToPusherMessage);
//}
console.warn(message);
}

View file

@ -0,0 +1,23 @@
import { ClientOpts, createClient, RedisClient } from "redis";
import { REDIS_HOST, REDIS_PASSWORD, REDIS_PORT } from "../Enum/EnvironmentVariable";
let redisClient: RedisClient | null = null;
if (REDIS_HOST !== undefined) {
const config: ClientOpts = {
host: REDIS_HOST,
port: REDIS_PORT,
};
if (REDIS_PASSWORD) {
config.password = REDIS_PASSWORD;
}
redisClient = createClient(config);
redisClient.on("error", (err) => {
console.error("Error connecting to Redis:", err);
});
}
export { redisClient };

View file

@ -0,0 +1,43 @@
import { promisify } from "util";
import { RedisClient } from "redis";
import { VariablesRepositoryInterface } from "./VariablesRepositoryInterface";
/**
* Class in charge of saving/loading variables from the data store
*/
export class RedisVariablesRepository implements VariablesRepositoryInterface {
private readonly hgetall: OmitThisParameter<(arg1: string) => Promise<{ [p: string]: string }>>;
private readonly hset: OmitThisParameter<(arg1: [string, ...string[]]) => Promise<number>>;
private readonly hdel: OmitThisParameter<(arg1: string, arg2: string) => Promise<number>>;
constructor(private redisClient: RedisClient) {
/* eslint-disable @typescript-eslint/unbound-method */
this.hgetall = promisify(redisClient.hgetall).bind(redisClient);
this.hset = promisify(redisClient.hset).bind(redisClient);
this.hdel = promisify(redisClient.hdel).bind(redisClient);
/* eslint-enable @typescript-eslint/unbound-method */
}
/**
* Load all variables for a room.
*
* Note: in Redis, variables are stored in a hashmap and the key is the roomUrl
*/
async loadVariables(roomUrl: string): Promise<{ [key: string]: string }> {
return this.hgetall(roomUrl);
}
async saveVariable(roomUrl: string, key: string, value: string): Promise<number> {
// The value is passed to JSON.stringify client side. If value is "undefined", JSON.stringify returns "undefined"
// which is translated to empty string when fetching the value in the pusher.
// Therefore, empty string server side == undefined client side.
if (value === "") {
return this.hdel(roomUrl, key);
}
// TODO: SLOW WRITING EVERY 2 SECONDS WITH A TIMEOUT
// @ts-ignore See https://stackoverflow.com/questions/63539317/how-do-i-use-hmset-with-node-promisify
return this.hset(roomUrl, key, value);
}
}

View file

@ -0,0 +1,14 @@
import { RedisVariablesRepository } from "./RedisVariablesRepository";
import { redisClient } from "../RedisClient";
import { VoidVariablesRepository } from "./VoidVariablesRepository";
import { VariablesRepositoryInterface } from "./VariablesRepositoryInterface";
let variablesRepository: VariablesRepositoryInterface;
if (!redisClient) {
console.warn("WARNING: Redis isnot configured. No variables will be persisted.");
variablesRepository = new VoidVariablesRepository();
} else {
variablesRepository = new RedisVariablesRepository(redisClient);
}
export { variablesRepository };

View file

@ -0,0 +1,10 @@
export interface VariablesRepositoryInterface {
/**
* Load all variables for a room.
*
* Note: in Redis, variables are stored in a hashmap and the key is the roomUrl
*/
loadVariables(roomUrl: string): Promise<{ [key: string]: string }>;
saveVariable(roomUrl: string, key: string, value: string): Promise<number>;
}

View file

@ -0,0 +1,14 @@
import { VariablesRepositoryInterface } from "./VariablesRepositoryInterface";
/**
* Mock class in charge of NOT saving/loading variables from the data store
*/
export class VoidVariablesRepository implements VariablesRepositoryInterface {
loadVariables(roomUrl: string): Promise<{ [key: string]: string }> {
return Promise.resolve({});
}
saveVariable(roomUrl: string, key: string, value: string): Promise<number> {
return Promise.resolve(0);
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,9 @@
/**
* Errors related to variable handling.
*/
export class VariableError extends Error {
constructor(message: string) {
super(message);
Object.setPrototypeOf(this, VariableError.prototype);
}
}

View file

@ -0,0 +1,229 @@
/**
* Handles variables shared between the scripting API and the server.
*/
import { ITiledMap, ITiledMapLayer, ITiledMapObject } from "@workadventure/tiled-map-type-guard/dist";
import { User } from "_Model/User";
import { variablesRepository } from "./Repository/VariablesRepository";
import { redisClient } from "./RedisClient";
import { VariableError } from "./VariableError";
interface Variable {
defaultValue?: string;
persist?: boolean;
readableBy?: string;
writableBy?: string;
}
export class VariablesManager {
/**
* The actual values of the variables for the current room
*/
private _variables = new Map<string, string>();
/**
* The list of variables that are allowed
*/
private variableObjects: Map<string, Variable> | undefined;
/**
* @param map The map can be "null" if it is hosted on a private network. In this case, we assume this is a test setup and bypass any server-side checks.
*/
constructor(private roomUrl: string, private map: ITiledMap | null) {
// We initialize the list of variable object at room start. The objects cannot be edited later
// (otherwise, this would cause a security issue if the scripting API can edit this list of objects)
if (map) {
this.variableObjects = VariablesManager.findVariablesInMap(map);
// Let's initialize default values
for (const [name, variableObject] of this.variableObjects.entries()) {
if (variableObject.defaultValue !== undefined) {
this._variables.set(name, variableObject.defaultValue);
}
}
}
}
/**
* Let's load data from the Redis backend.
*/
public async init(): Promise<VariablesManager> {
if (!this.shouldPersist()) {
return this;
}
const variables = await variablesRepository.loadVariables(this.roomUrl);
for (const key in variables) {
// Let's only set variables if they are in the map (if the map has changed, maybe stored variables do not exist anymore)
if (this.variableObjects) {
const variableObject = this.variableObjects.get(key);
if (variableObject === undefined) {
continue;
}
if (!variableObject.persist) {
continue;
}
}
this._variables.set(key, variables[key]);
}
return this;
}
/**
* Returns true if saving should be enabled, and false otherwise.
*
* Saving is enabled if REDIS_HOST is set
* unless we are editing a local map
* unless we are in dev mode in which case it is ok to save
*
* @private
*/
private shouldPersist(): boolean {
return redisClient !== null && (this.map !== null || process.env.NODE_ENV === "development");
}
private static findVariablesInMap(map: ITiledMap): Map<string, Variable> {
const objects = new Map<string, Variable>();
for (const layer of map.layers) {
this.recursiveFindVariablesInLayer(layer, objects);
}
return objects;
}
private static recursiveFindVariablesInLayer(layer: ITiledMapLayer, objects: Map<string, Variable>): void {
if (layer.type === "objectgroup") {
for (const object of layer.objects) {
if (object.type === "variable") {
if (object.template) {
console.warn(
'Warning, a variable object is using a Tiled "template". WorkAdventure does not support objects generated from Tiled templates.'
);
continue;
}
// We store a copy of the object (to make it immutable)
objects.set(object.name as string, this.iTiledObjectToVariable(object));
}
}
} else if (layer.type === "group") {
for (const innerLayer of layer.layers as ITiledMapLayer[]) {
this.recursiveFindVariablesInLayer(innerLayer, objects);
}
}
}
private static iTiledObjectToVariable(object: ITiledMapObject): Variable {
const variable: Variable = {};
if (object.properties) {
for (const property of object.properties) {
const value = property.value as unknown;
switch (property.name) {
case "default":
variable.defaultValue = JSON.stringify(value);
break;
case "persist":
if (typeof value !== "boolean") {
throw new Error('The persist property of variable "' + object.name + '" must be a boolean');
}
variable.persist = value;
break;
case "writableBy":
if (typeof value !== "string") {
throw new Error(
'The writableBy property of variable "' + object.name + '" must be a string'
);
}
if (value) {
variable.writableBy = value;
}
break;
case "readableBy":
if (typeof value !== "string") {
throw new Error(
'The readableBy property of variable "' + object.name + '" must be a string'
);
}
if (value) {
variable.readableBy = value;
}
break;
}
}
}
return variable;
}
/**
* Sets the variable.
*
* Returns who is allowed to read the variable (the readableby property) or "undefined" if anyone can read it.
* Also, returns "false" if the variable was not modified (because we set it to the value it already has)
*
* @param name
* @param value
* @param user
*/
setVariable(name: string, value: string, user: User): string | undefined | false {
let readableBy: string | undefined;
let variableObject: Variable | undefined;
if (this.variableObjects) {
variableObject = this.variableObjects.get(name);
if (variableObject === undefined) {
throw new VariableError(
'Trying to set a variable "' + name + '" that is not defined as an object in the map.'
);
}
if (variableObject.writableBy && !user.tags.includes(variableObject.writableBy)) {
throw new VariableError(
'Trying to set a variable "' +
name +
'". User "' +
user.name +
'" does not have sufficient permission. Required tag: "' +
variableObject.writableBy +
'". User tags: ' +
user.tags.join(", ") +
"."
);
}
readableBy = variableObject.readableBy;
}
// If the value is not modified, return false
if (this._variables.get(name) === value) {
return false;
}
this._variables.set(name, value);
if (variableObject !== undefined && variableObject.persist) {
variablesRepository
.saveVariable(this.roomUrl, name, value)
.catch((e) => console.error("Error while saving variable in Redis:", e));
}
return readableBy;
}
public getVariablesForTags(tags: string[]): Map<string, string> {
if (this.variableObjects === undefined) {
return this._variables;
}
const readableVariables = new Map<string, string>();
for (const [key, value] of this._variables.entries()) {
const variableObject = this.variableObjects.get(key);
if (variableObject === undefined) {
throw new Error('Unexpected variable "' + key + '" found has no associated variableObject.');
}
if (!variableObject.readableBy || tags.includes(variableObject.readableBy)) {
readableVariables.set(key, value);
}
}
return readableVariables;
}
}

View file

@ -1,97 +1,148 @@
import "jasmine"; import "jasmine";
import {GameRoom, ConnectCallback, DisconnectCallback } from "../src/Model/GameRoom"; import { ConnectCallback, DisconnectCallback, GameRoom } from "../src/Model/GameRoom";
import {Point} from "../src/Model/Websocket/MessageUserPosition"; import { Point } from "../src/Model/Websocket/MessageUserPosition";
import { Group } from "../src/Model/Group"; import { Group } from "../src/Model/Group";
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface"; import { User, UserSocket } from "_Model/User";
import {User} from "_Model/User"; import { JoinRoomMessage, PositionMessage } from "../src/Messages/generated/messages_pb";
import Direction = PositionMessage.Direction;
import { EmoteCallback } from "_Model/Zone";
function createMockUser(userId: number): ExSocketInterface { function createMockUser(userId: number): User {
return { return {
userId userId,
} as ExSocketInterface; } as unknown as User;
} }
function createMockUserSocket(): UserSocket {
return {} as unknown as UserSocket;
}
function createJoinRoomMessage(uuid: string, x: number, y: number): JoinRoomMessage {
const positionMessage = new PositionMessage();
positionMessage.setX(x);
positionMessage.setY(y);
positionMessage.setDirection(Direction.DOWN);
positionMessage.setMoving(false);
const joinRoomMessage = new JoinRoomMessage();
joinRoomMessage.setUseruuid("1");
joinRoomMessage.setIpaddress("10.0.0.2");
joinRoomMessage.setName("foo");
joinRoomMessage.setRoomid("_/global/test.json");
joinRoomMessage.setPositionmessage(positionMessage);
return joinRoomMessage;
}
const emote: EmoteCallback = (emoteEventMessage, listener): void => {};
describe("GameRoom", () => { describe("GameRoom", () => {
it("should connect user1 and user2", () => { it("should connect user1 and user2", async () => {
let connectCalledNumber: number = 0; let connectCalledNumber: number = 0;
const connect: ConnectCallback = (user: User, group: Group): void => { const connect: ConnectCallback = (user: User, group: Group): void => {
connectCalledNumber++; connectCalledNumber++;
} };
const disconnect: DisconnectCallback = (user: User, group: Group): void => { const disconnect: DisconnectCallback = (user: User, group: Group): void => {};
} const world = await GameRoom.create(
"https://play.workadventu.re/_/global/localhost/test.json",
connect,
disconnect,
160,
160,
() => {},
() => {},
() => {},
emote,
() => {}
);
const world = new GameRoom('_/global/test.json', connect, disconnect, 160, 160, () => {}, () => {}, () => {}); const user1 = world.join(createMockUserSocket(), createJoinRoomMessage("1", 100, 100));
world.join(createMockUser(1), new Point(100, 100)); const user2 = world.join(createMockUserSocket(), createJoinRoomMessage("2", 500, 100));
world.join(createMockUser(2), new Point(500, 100)); world.updatePosition(user2, new Point(261, 100));
world.updatePosition({ userId: 2 }, new Point(261, 100));
expect(connectCalledNumber).toBe(0); expect(connectCalledNumber).toBe(0);
world.updatePosition({ userId: 2 }, new Point(101, 100)); world.updatePosition(user2, new Point(101, 100));
expect(connectCalledNumber).toBe(2); expect(connectCalledNumber).toBe(2);
world.updatePosition({ userId: 2 }, new Point(102, 100)); world.updatePosition(user2, new Point(102, 100));
expect(connectCalledNumber).toBe(2); expect(connectCalledNumber).toBe(2);
}); });
it("should connect 3 users", () => { it("should connect 3 users", async () => {
let connectCalled: boolean = false; let connectCalled: boolean = false;
const connect: ConnectCallback = (user: User, group: Group): void => { const connect: ConnectCallback = (user: User, group: Group): void => {
connectCalled = true; connectCalled = true;
} };
const disconnect: DisconnectCallback = (user: User, group: Group): void => { const disconnect: DisconnectCallback = (user: User, group: Group): void => {};
} const world = await GameRoom.create(
"https://play.workadventu.re/_/global/localhost/test.json",
connect,
disconnect,
160,
160,
() => {},
() => {},
() => {},
emote,
() => {}
);
const world = new GameRoom('_/global/test.json', connect, disconnect, 160, 160, () => {}, () => {}, () => {}); const user1 = world.join(createMockUserSocket(), createJoinRoomMessage("1", 100, 100));
world.join(createMockUser(1), new Point(100, 100)); const user2 = world.join(createMockUserSocket(), createJoinRoomMessage("2", 200, 100));
world.join(createMockUser(2), new Point(200, 100));
expect(connectCalled).toBe(true); expect(connectCalled).toBe(true);
connectCalled = false; connectCalled = false;
// baz joins at the outer limit of the group // baz joins at the outer limit of the group
world.join(createMockUser(3), new Point(311, 100)); const user3 = world.join(createMockUserSocket(), createJoinRoomMessage("2", 311, 100));
expect(connectCalled).toBe(false); expect(connectCalled).toBe(false);
world.updatePosition({ userId: 3 }, new Point(309, 100)); world.updatePosition(user3, new Point(309, 100));
expect(connectCalled).toBe(true); expect(connectCalled).toBe(true);
}); });
it("should disconnect user1 and user2", () => { it("should disconnect user1 and user2", async () => {
let connectCalled: boolean = false; let connectCalled: boolean = false;
let disconnectCallNumber: number = 0; let disconnectCallNumber: number = 0;
const connect: ConnectCallback = (user: User, group: Group): void => { const connect: ConnectCallback = (user: User, group: Group): void => {
connectCalled = true; connectCalled = true;
} };
const disconnect: DisconnectCallback = (user: User, group: Group): void => { const disconnect: DisconnectCallback = (user: User, group: Group): void => {
disconnectCallNumber++; disconnectCallNumber++;
} };
const world = new GameRoom('_/global/test.json', connect, disconnect, 160, 160, () => {}, () => {}, () => {}); const world = await GameRoom.create(
"https://play.workadventu.re/_/global/localhost/test.json",
connect,
disconnect,
160,
160,
() => {},
() => {},
() => {},
emote,
() => {}
);
world.join(createMockUser(1), new Point(100, 100)); const user1 = world.join(createMockUserSocket(), createJoinRoomMessage("1", 100, 100));
world.join(createMockUser(2), new Point(259, 100)); const user2 = world.join(createMockUserSocket(), createJoinRoomMessage("2", 259, 100));
expect(connectCalled).toBe(true); expect(connectCalled).toBe(true);
expect(disconnectCallNumber).toBe(0); expect(disconnectCallNumber).toBe(0);
world.updatePosition({ userId: 2 }, new Point(100+160+160+1, 100)); world.updatePosition(user2, new Point(100 + 160 + 160 + 1, 100));
expect(disconnectCallNumber).toBe(2); expect(disconnectCallNumber).toBe(2);
world.updatePosition({ userId: 2 }, new Point(262, 100)); world.updatePosition(user2, new Point(262, 100));
expect(disconnectCallNumber).toBe(2); expect(disconnectCallNumber).toBe(2);
}); });
});
})

View file

@ -0,0 +1,32 @@
import { arrayIntersect } from "../src/Services/ArrayHelper";
import { mapFetcher } from "../src/Services/MapFetcher";
describe("MapFetcher", () => {
it("should return true on localhost ending URLs", async () => {
expect(await mapFetcher.isLocalUrl("https://localhost")).toBeTrue();
expect(await mapFetcher.isLocalUrl("https://foo.localhost")).toBeTrue();
});
it("should return true on DNS resolving to a local domain", async () => {
expect(await mapFetcher.isLocalUrl("https://127.0.0.1.nip.io")).toBeTrue();
});
it("should return true on an IP resolving to a local domain", async () => {
expect(await mapFetcher.isLocalUrl("https://127.0.0.1")).toBeTrue();
expect(await mapFetcher.isLocalUrl("https://192.168.0.1")).toBeTrue();
});
it("should return false on an IP resolving to a global domain", async () => {
expect(await mapFetcher.isLocalUrl("https://51.12.42.42")).toBeFalse();
});
it("should return false on an DNS resolving to a global domain", async () => {
expect(await mapFetcher.isLocalUrl("https://maps.workadventu.re")).toBeFalse();
});
it("should throw error on invalid domain", async () => {
await expectAsync(
mapFetcher.isLocalUrl("https://this.domain.name.doesnotexistfoobgjkgfdjkgldf.com")
).toBeRejected();
});
});

View file

@ -1,15 +1,10 @@
import "jasmine"; import "jasmine";
import {GameRoom, ConnectCallback, DisconnectCallback } from "_Model/GameRoom"; import { PositionNotifier } from "../src/Model/PositionNotifier";
import {Point} from "../src/Model/Websocket/MessageUserPosition"; import { User, UserSocket } from "../src/Model/User";
import { Group } from "../src/Model/Group"; import { Zone } from "_Model/Zone";
import {PositionNotifier} from "../src/Model/PositionNotifier"; import { Movable } from "_Model/Movable";
import {User} from "../src/Model/User"; import { PositionInterface } from "_Model/PositionInterface";
import {PointInterface} from "../src/Model/Websocket/PointInterface"; import { ZoneSocket } from "../src/RoomManager";
import {Zone} from "_Model/Zone";
import {Movable} from "_Model/Movable";
import {PositionInterface} from "_Model/PositionInterface";
import {ExSocketInterface} from "_Model/Websocket/ExSocketInterface";
describe("PositionNotifier", () => { describe("PositionNotifier", () => {
it("should receive notifications when player moves", () => { it("should receive notifications when player moves", () => {
@ -17,50 +12,86 @@ describe("PositionNotifier", () => {
let moveTriggered = false; let moveTriggered = false;
let leaveTriggered = false; let leaveTriggered = false;
const positionNotifier = new PositionNotifier(300, 300, (thing: Movable) => { const positionNotifier = new PositionNotifier(
enterTriggered = true; 300,
}, (thing: Movable, position: PositionInterface) => { 300,
moveTriggered = true; (thing: Movable) => {
}, (thing: Movable) => { enterTriggered = true;
leaveTriggered = true; },
}); (thing: Movable, position: PositionInterface) => {
moveTriggered = true;
},
(thing: Movable) => {
leaveTriggered = true;
},
() => {},
() => {}
);
const user1 = new User(1, 'test', { const user1 = new User(
x: 500, 1,
y: 500, "test",
moving: false, "10.0.0.2",
direction: 'down' {
}, false, positionNotifier, {} as ExSocketInterface); x: 500,
y: 500,
moving: false,
direction: "down",
},
false,
positionNotifier,
{} as UserSocket,
[],
null,
"foo",
[]
);
const user2 = new User(2, 'test', { const user2 = new User(
x: -9999, 2,
y: -9999, "test",
moving: false, "10.0.0.2",
direction: 'down' {
}, false, positionNotifier, {} as ExSocketInterface); x: -9999,
y: -9999,
moving: false,
direction: "down",
},
false,
positionNotifier,
{} as UserSocket,
[],
null,
"foo",
[]
);
positionNotifier.setViewport(user1, { positionNotifier.addZoneListener({} as ZoneSocket, 0, 0);
positionNotifier.addZoneListener({} as ZoneSocket, 0, 1);
positionNotifier.addZoneListener({} as ZoneSocket, 1, 1);
positionNotifier.addZoneListener({} as ZoneSocket, 1, 0);
/*positionNotifier.setViewport(user1, {
left: 200, left: 200,
right: 600, right: 600,
top: 100, top: 100,
bottom: 500 bottom: 500
}); });*/
user2.setPosition({x: 500, y: 500, direction: 'down', moving: false}); user2.setPosition({ x: 500, y: 500, direction: "down", moving: false });
expect(enterTriggered).toBe(true); expect(enterTriggered).toBe(true);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
enterTriggered = false; enterTriggered = false;
// Move inside the zone // Move inside the zone
user2.setPosition({x:501, y:500, direction: 'down', moving: false}); user2.setPosition({ x: 501, y: 500, direction: "down", moving: false });
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(true); expect(moveTriggered).toBe(true);
moveTriggered = false; moveTriggered = false;
// Move out of the zone in a zone that we don't track // Move out of the zone in a zone that we don't track
user2.setPosition({x: 901, y: 500, direction: 'down', moving: false}); user2.setPosition({ x: 901, y: 500, direction: "down", moving: false });
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
@ -68,22 +99,15 @@ describe("PositionNotifier", () => {
leaveTriggered = false; leaveTriggered = false;
// Move back in // Move back in
user2.setPosition({x: 500, y: 500, direction: 'down', moving: false}); user2.setPosition({ x: 500, y: 500, direction: "down", moving: false });
expect(enterTriggered).toBe(true); expect(enterTriggered).toBe(true);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
expect(leaveTriggered).toBe(false); expect(leaveTriggered).toBe(false);
enterTriggered = false; enterTriggered = false;
// Move out of the zone in a zone that we do track
user2.setPosition({x: 200, y: 500, direction: 'down', moving: false});
expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(true);
expect(leaveTriggered).toBe(false);
moveTriggered = false;
// Leave the room // Leave the room
positionNotifier.leave(user2); positionNotifier.leave(user2);
positionNotifier.removeViewport(user2); //positionNotifier.removeViewport(user2);
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
expect(leaveTriggered).toBe(true); expect(leaveTriggered).toBe(true);
@ -95,82 +119,128 @@ describe("PositionNotifier", () => {
let moveTriggered = false; let moveTriggered = false;
let leaveTriggered = false; let leaveTriggered = false;
const positionNotifier = new PositionNotifier(300, 300, (thing: Movable) => { const positionNotifier = new PositionNotifier(
enterTriggered = true; 300,
}, (thing: Movable, position: PositionInterface) => { 300,
moveTriggered = true; (thing: Movable, fromZone: Zone | null) => {
}, (thing: Movable) => { enterTriggered = true;
leaveTriggered = true; },
}); (thing: Movable, position: PositionInterface) => {
moveTriggered = true;
},
(thing: Movable) => {
leaveTriggered = true;
},
() => {},
() => {}
);
const user1 = new User(1, 'test', { const user1 = new User(
x: 500, 1,
y: 500, "test",
moving: false, "10.0.0.2",
direction: 'down' {
}, false, positionNotifier, {} as ExSocketInterface); x: 500,
y: 500,
moving: false,
direction: "down",
},
false,
positionNotifier,
{} as UserSocket,
[],
null,
"foo",
[]
);
const user2 = new User(2, 'test', { const user2 = new User(
x: 0, 2,
y: 0, "test",
moving: false, "10.0.0.2",
direction: 'down' {
}, false, positionNotifier, {} as ExSocketInterface); x: 0,
y: 0,
moving: false,
direction: "down",
},
false,
positionNotifier,
{} as UserSocket,
[],
null,
"foo",
[]
);
let newUsers = positionNotifier.setViewport(user1, { const listener = {} as ZoneSocket;
positionNotifier.addZoneListener(listener, 0, 0);
positionNotifier.addZoneListener(listener, 0, 1);
positionNotifier.addZoneListener(listener, 1, 1);
positionNotifier.addZoneListener(listener, 1, 0);
/*let newUsers = positionNotifier.setViewport(user1, {
left: 200, left: 200,
right: 600, right: 600,
top: 100, top: 100,
bottom: 500 bottom: 500
}); });*/
positionNotifier.enter(user1);
positionNotifier.enter(user2);
expect(newUsers.length).toBe(2); //expect(newUsers.length).toBe(2);
expect(enterTriggered).toBe(true); expect(enterTriggered).toBe(true);
enterTriggered = false; enterTriggered = false;
user2.setPosition({x: 500, y: 500, direction: 'down', moving: false}); //positionNotifier.updatePosition(user2, {x:500, y:500}, {x:0, y: 0})
user2.setPosition({ x: 500, y: 500, direction: "down", moving: false });
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(true);
expect(moveTriggered).toBe(true); expect(moveTriggered).toBe(false);
moveTriggered = false; expect(leaveTriggered).toBe(true);
enterTriggered = false;
leaveTriggered = false;
// Move the viewport but the user stays inside. // Add a listener, but the user in not in this zone.
positionNotifier.setViewport(user1, { positionNotifier.addZoneListener(listener, 10, 10);
/*positionNotifier.setViewport(user1, {
left: 201, left: 201,
right: 601, right: 601,
top: 100, top: 100,
bottom: 500 bottom: 500
}); });*/
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
expect(leaveTriggered).toBe(false); expect(leaveTriggered).toBe(false);
// Stop listening to zone
positionNotifier.removeZoneListener(listener, 1, 1);
// Move the viewport out of the user. // Move the viewport out of the user.
positionNotifier.setViewport(user1, { /*positionNotifier.setViewport(user1, {
left: 901, left: 901,
right: 1001, right: 1001,
top: 100, top: 100,
bottom: 500 bottom: 500
}); });*/
expect(enterTriggered).toBe(false); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
expect(leaveTriggered).toBe(true); expect(leaveTriggered).toBe(false);
leaveTriggered = false;
// Move the viewport back on the user. // Move the viewport back on the user.
newUsers = positionNotifier.setViewport(user1, { positionNotifier.addZoneListener(listener, 1, 1);
/*newUsers = positionNotifier.setViewport(user1, {
left: 200, left: 200,
right: 600, right: 600,
top: 100, top: 100,
bottom: 500 bottom: 500
}); });*/
expect(enterTriggered).toBe(true); expect(enterTriggered).toBe(false);
expect(moveTriggered).toBe(false); expect(moveTriggered).toBe(false);
expect(leaveTriggered).toBe(false); expect(leaveTriggered).toBe(false);
enterTriggered = false; enterTriggered = false;
expect(newUsers.length).toBe(2); //expect(newUsers.length).toBe(2);
}); });
}) });

View file

@ -1,19 +0,0 @@
import {extractDataFromPrivateRoomId, extractRoomSlugPublicRoomId, isRoomAnonymous} from "../src/Model/RoomIdentifier";
describe("RoomIdentifier", () => {
it("should flag public id as anonymous", () => {
expect(isRoomAnonymous('_/global/test')).toBe(true);
});
it("should flag public id as not anonymous", () => {
expect(isRoomAnonymous('@/afup/afup2020/1floor')).toBe(false);
});
it("should extract roomSlug from public ID", () => {
expect(extractRoomSlugPublicRoomId('_/global/npeguin/test.json')).toBe('npeguin/test.json');
});
it("should extract correct from private ID", () => {
const {organizationSlug, worldSlug, roomSlug} = extractDataFromPrivateRoomId('@/afup/afup2020/1floor');
expect(organizationSlug).toBe('afup');
expect(worldSlug).toBe('afup2020');
expect(roomSlug).toBe('1floor');
});
})

View file

@ -0,0 +1,67 @@
import "jasmine";
import { getNearbyDescriptorsMatrix } from "../src/Model/PositionNotifier";
describe("getNearbyDescriptorsMatrix", () => {
it("should create a matrix of coordinates in a square around the parameter", () => {
const matrix = [];
for (const d of getNearbyDescriptorsMatrix({ i: 1, j: 1 })) {
matrix.push(d);
}
expect(matrix).toEqual([
{ i: 0, j: 0 },
{ i: 1, j: 0 },
{ i: 2, j: 0 },
{ i: 0, j: 1 },
{ i: 1, j: 1 },
{ i: 2, j: 1 },
{ i: 0, j: 2 },
{ i: 1, j: 2 },
{ i: 2, j: 2 },
]);
});
it("should create a matrix of coordinates in a square around the parameter bis", () => {
const matrix = [];
for (const d of getNearbyDescriptorsMatrix({ i: 8, j: 3 })) {
matrix.push(d);
}
expect(matrix).toEqual([
{ i: 7, j: 2 },
{ i: 8, j: 2 },
{ i: 9, j: 2 },
{ i: 7, j: 3 },
{ i: 8, j: 3 },
{ i: 9, j: 3 },
{ i: 7, j: 4 },
{ i: 8, j: 4 },
{ i: 9, j: 4 },
]);
});
it("should not create a matrix with negative coordinates", () => {
const matrix = [];
for (const d of getNearbyDescriptorsMatrix({ i: 0, j: 0 })) {
matrix.push(d);
}
expect(matrix).toEqual([
{ i: 0, j: 0 },
{ i: 1, j: 0 },
{ i: 0, j: 1 },
{ i: 1, j: 1 },
]);
});
/*it("should not create a matrix with coordinates bigger than its dimmensions", () => {
const matrix = getNearbyDescriptorsMatrix({i: 4, j: 4}, 5, 5);
expect(matrix).toEqual([
{i: 3,j: 3},
{i: 4,j: 3},
{i: 3,j: 4},
{i: 4,j: 4},
])
});*/
});

View file

@ -3,7 +3,7 @@
"experimentalDecorators": true, "experimentalDecorators": true,
/* Basic Options */ /* Basic Options */
// "incremental": true, /* Enable incremental compilation */ // "incremental": true, /* Enable incremental compilation */
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ "target": "ES2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"downlevelIteration": true, "downlevelIteration": true,
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */ // "lib": [], /* Specify library files to be included in the compilation. */

File diff suppressed because it is too large Load diff

View file

@ -2,6 +2,7 @@ import {RoomConnection} from "../front/src/Connexion/RoomConnection";
import {connectionManager} from "../front/src/Connexion/ConnectionManager"; import {connectionManager} from "../front/src/Connexion/ConnectionManager";
import * as WebSocket from "ws" import * as WebSocket from "ws"
let userMovedCount = 0;
function sleep(ms) { function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms)); return new Promise(resolve => setTimeout(resolve, ms));
@ -12,8 +13,7 @@ RoomConnection.setWebsocketFactory((url: string) => {
}); });
async function startOneUser(): Promise<void> { async function startOneUser(): Promise<void> {
await connectionManager.anonymousLogin(true); const onConnect = await connectionManager.connectToRoomSocket(process.env.ROOM_ID ? process.env.ROOM_ID : '_/global/maps.workadventure.localhost/Floor0/floor0.json', 'TEST', ['male3'],
const connection = await connectionManager.connectToRoomSocket(process.env.ROOM_ID ? process.env.ROOM_ID : '_/global/maps.workadventure.localhost/Floor0/floor0.json', 'TEST', ['male3'],
{ {
x: 783, x: 783,
y: 170 y: 170
@ -22,7 +22,13 @@ async function startOneUser(): Promise<void> {
bottom: 200, bottom: 200,
left: 500, left: 500,
right: 800 right: 800
}); }, null);
const connection = onConnect.connection;
connection.onUserMoved(() => {
userMovedCount++;
})
console.log(connection.getUserId()); console.log(connection.getUserId());
@ -51,10 +57,15 @@ async function startOneUser(): Promise<void> {
(async () => { (async () => {
connectionManager.initBenchmark(); connectionManager.initBenchmark();
const promises = [];
for (let userNo = 0; userNo < 160; userNo++) { for (let userNo = 0; userNo < 160; userNo++) {
startOneUser(); const promise = startOneUser();
promises.push(promise);
// Wait 0.5s between adding users // Wait 0.5s between adding users
await sleep(125); await sleep(125);
} }
await Promise.all(promises);
console.log('User moved count: '+userMovedCount);
})(); })();

View file

@ -209,9 +209,9 @@
} }
}, },
"glob-parent": { "glob-parent": {
"version": "5.1.1", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"requires": { "requires": {
"is-glob": "^4.0.1" "is-glob": "^4.0.1"
} }
@ -230,9 +230,9 @@
} }
}, },
"hosted-git-info": { "hosted-git-info": {
"version": "2.8.8", "version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
}, },
"indent-string": { "indent-string": {
"version": "2.1.0", "version": "2.1.0",
@ -429,9 +429,9 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
}, },
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
}, },
"path-type": { "path-type": {
"version": "1.1.0", "version": "1.1.0",
@ -688,9 +688,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}, },
"ws": { "ws": {
"version": "7.3.1", "version": "7.4.6",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
"integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
}, },
"xtend": { "xtend": {
"version": "4.0.2", "version": "4.0.2",

View file

@ -24,7 +24,7 @@
"@types/ws": "^7.2.6", "@types/ws": "^7.2.6",
"ts-node-dev": "^1.0.0-pre.62", "ts-node-dev": "^1.0.0-pre.62",
"typescript": "^4.0.2", "typescript": "^4.0.2",
"ws": "^7.3.1" "ws": "^7.4.6"
}, },
"devDependencies": {} "devDependencies": {}
} }

View file

@ -148,8 +148,8 @@ get-stdin@^4.0.1:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
glob-parent@~5.1.0: glob-parent@~5.1.0:
version "5.1.1" version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
dependencies: dependencies:
is-glob "^4.0.1" is-glob "^4.0.1"
@ -169,8 +169,8 @@ graceful-fs@^4.1.2:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
hosted-git-info@^2.1.4: hosted-git-info@^2.1.4:
version "2.8.8" version "2.8.9"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
indent-string@^2.1.0: indent-string@^2.1.0:
version "2.1.0" version "2.1.0"
@ -315,8 +315,8 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
path-parse@^1.0.6: path-parse@^1.0.6:
version "1.0.6" version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
path-type@^1.0.0: path-type@^1.0.0:
version "1.1.0" version "1.1.0"
@ -515,9 +515,9 @@ wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
ws@^7.3.1: ws@^7.4.6:
version "7.3.1" version "7.4.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
xtend@^4.0.0: xtend@^4.0.0:
version "4.0.2" version "4.0.2"

View file

@ -0,0 +1,118 @@
# Security
#
SECRET_KEY=
ADMIN_API_TOKEN=
#
# Networking
#
# The base domain
DOMAIN=workadventure.localhost
# Subdomains
# MUST match the DOMAIN variable above
FRONT_HOST=front.workadventure.localhost
PUSHER_HOST=pusher.workadventure.localhost
BACK_HOST=api.workadventure.localhost
MAPS_HOST=maps.workadventure.localhost
ICON_HOST=icon.workadventure.localhost
# SAAS admin panel
ADMIN_API_URL=
#
# Basic configuration
#
# The directory to store data in
DATA_DIR=./wa
# The URL used by default, in the form: "/_/global/map/url.json"
START_ROOM_URL=/_/global/maps.workadventu.re/Floor0/floor0.json
# If you want to have a contact page in your menu,
# you MUST set CONTACT_URL to the URL of the page that you want
CONTACT_URL=
MAX_PER_GROUP=4
MAX_USERNAME_LENGTH=8
DISABLE_ANONYMOUS=false
# The version of the docker image to use
# MUST uncomment "image" keys in the docker-compose file for it to be effective
VERSION=master
TZ=Europe/Paris
#
# Jitsi
#
JITSI_URL=meet.jit.si
# If your Jitsi environment has authentication set up,
# you MUST set JITSI_PRIVATE_MODE to "true"
# and you MUST pass a SECRET_JITSI_KEY to generate the JWT secret
JITSI_PRIVATE_MODE=false
JITSI_ISS=
SECRET_JITSI_KEY=
#
# Turn/Stun
#
# URL of the TURN server (needed to "punch a hole" through some networks for P2P connections)
TURN_SERVER=
TURN_USER=
TURN_PASSWORD=
# If your Turn server is configured to use the Turn REST API, you MUST put the shared auth secret here.
# If you are using Coturn, this is the value of the "static-auth-secret" parameter in your coturn config file.
# Keep empty if you are sharing hard coded / clear text credentials.
TURN_STATIC_AUTH_SECRET=
# URL of the STUN server
STUN_SERVER=
#
# Certificate config
#
# The email address used by Let's encrypt to send renewal warnings (compulsory)
ACME_EMAIL=
#
# Additional app configs
# Configuration for apps which are not workadventure itself
#
# openID
OPID_CLIENT_ID=
OPID_CLIENT_SECRET=
OPID_CLIENT_ISSUER=
OPID_CLIENT_REDIRECT_URL=
OPID_LOGIN_SCREEN_PROVIDER=http://pusher.workadventure.localhost/login-screen
OPID_PROFILE_SCREEN_PROVIDER=
#
# Advanced configuration
# Generally does not need to be changed
#
# Networking
HTTP_PORT=80
HTTPS_PORT=443
# Workadventure settings
DISABLE_NOTIFICATIONS=false
SKIP_RENDER_OPTIMIZATIONS=false
STORE_VARIABLES_FOR_LOCAL_MAPS=true
# Debugging options
DEBUG_MODE=false
LOG_LEVEL=WARN
# Internal URLs
API_URL=back:50051
RESTART_POLICY=unless-stopped

View file

@ -0,0 +1,62 @@
version: "3.3"
services:
front-dev:
build:
context: ../..
dockerfile: front/Dockerfile
#image: thecodingmachine/workadventure-front:master
environment:
LIVE_RELOAD: "true"
NODE_ENV: "develop"
DEBUG_MODE: "$DEBUG_MODE"
JITSI_URL: "$JITSI_URL"
JITSI_PRIVATE_MODE: "$JITSI_PRIVATE_MODE"
PUSHER_URL: "https://pusher.${DOMAIN}"
ICON_URL: "https://icon.${DOMAIN}"
API_URL: "pusher.${DOMAIN}"
STUN_SERVER: "${STUN_SERVER}"
TURN_SERVER: "${TURN_SERVER}"
TURN_USER: "${TURN_USER}"
TURN_PASSWORD: "${TURN_PASSWORD}"
START_ROOM_URL: "${START_ROOM_URL}"
MAX_PER_GROUP: "$MAX_PER_GROUP"
MAX_USERNAME_LENGTH: "$MAX_USERNAME_LENGTH"
FALLBACK_LOCALE: "${DEFAULT_LOCALE}"
ports:
- "127.0.0.1:8011:80"
restart: unless-stopped
pusher-dev:
build:
context: ../..
dockerfile: pusher/Dockerfile
#image: thecodingmachine/workadventure-pusher:master
command: yarn run runprod
environment:
SECRET_JITSI_KEY: "$SECRET_JITSI_KEY"
SECRET_KEY: yourSecretKey
API_URL: back-dev:50051
JITSI_URL: $JITSI_URL
JITSI_ISS: $JITSI_ISS
FRONT_URL: https://play.${DOMAIN}
ports:
- "127.0.0.1:8012:8080"
restart: unless-stopped
back-dev:
build:
context: ../..
dockerfile: back/Dockerfile
#image: thecodingmachine/workadventure-back:master
command: yarn run runprod
environment:
NODE_ENV: develop
SECRET_JITSI_KEY: "$SECRET_JITSI_KEY"
ADMIN_API_TOKEN: "$ADMIN_API_TOKEN"
ADMIN_API_URL: "$ADMIN_API_URL"
JITSI_URL: $JITSI_URL
JITSI_ISS: $JITSI_ISS
TURN_STATIC_AUTH_SECRET: "$TURN_STATIC_AUTH_SECRET"
ports:
- "127.0.0.1:8013:8080"
restart: unless-stopped

View file

@ -0,0 +1,128 @@
version: "3.5"
services:
reverse-proxy:
image: traefik:v2.6
command:
- --log.level=${LOG_LEVEL}
- --providers.docker
# Entry points
- --entryPoints.web.address=:${HTTP_PORT}
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entryPoints.websecure.address=:${HTTPS_PORT}
# HTTP challenge
- --certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}
- --certificatesresolvers.myresolver.acme.storage=/acme.json
- --certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web
# Let's Encrypt's staging server
# uncomment during testing to avoid rate limiting
#- --certificatesresolvers.dnsresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
ports:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${DATA_DIR}/letsencrypt/acme.json:/acme.json
restart: ${RESTART_POLICY}
front:
build:
context: ../..
dockerfile: front/Dockerfile
#image: thecodingmachine/workadventure-front:${VERSION}
environment:
- DEBUG_MODE
- JITSI_URL
- JITSI_PRIVATE_MODE
- PUSHER_URL=//${PUSHER_HOST}
- ICON_URL=//${ICON_HOST}
- TURN_SERVER
- TURN_USER
- TURN_PASSWORD
- TURN_STATIC_AUTH_SECRET
- STUN_SERVER
- START_ROOM_URL
- SKIP_RENDER_OPTIMIZATIONS
- MAX_PER_GROUP
- MAX_USERNAME_LENGTH
- DISABLE_ANONYMOUS
- DISABLE_NOTIFICATIONS
labels:
- "traefik.http.routers.front.rule=Host(`${FRONT_HOST}`)"
- "traefik.http.routers.front.entryPoints=web"
- "traefik.http.services.front.loadbalancer.server.port=80"
- "traefik.http.routers.front-ssl.rule=Host(`${FRONT_HOST}`)"
- "traefik.http.routers.front-ssl.entryPoints=websecure"
- "traefik.http.routers.front-ssl.service=front"
- "traefik.http.routers.front-ssl.tls=true"
- "traefik.http.routers.front-ssl.tls.certresolver=myresolver"
restart: ${RESTART_POLICY}
pusher:
build:
context: ../..
dockerfile: pusher/Dockerfile
#image: thecodingmachine/workadventure-pusher:${VERSION}
command: yarn run runprod
environment:
- SECRET_JITSI_KEY
- SECRET_KEY
- API_URL
- FRONT_URL=https://${FRONT_HOST}
- JITSI_URL
- JITSI_ISS
- DISABLE_ANONYMOUS
labels:
- "traefik.http.routers.pusher.rule=Host(`${PUSHER_HOST}`)"
- "traefik.http.routers.pusher.entryPoints=web"
- "traefik.http.services.pusher.loadbalancer.server.port=8080"
- "traefik.http.routers.pusher-ssl.rule=Host(${PUSHER_HOST}`)"
- "traefik.http.routers.pusher-ssl.entryPoints=websecure"
- "traefik.http.routers.pusher-ssl.service=pusher"
- "traefik.http.routers.pusher-ssl.tls=true"
- "traefik.http.routers.pusher-ssl.tls.certresolver=myresolver"
restart: ${RESTART_POLICY}
back:
build:
context: ../..
dockerfile: back/Dockerfile
#image: thecodingmachine/workadventure-back:${VERSION}
command: yarn run runprod
environment:
- SECRET_JITSI_KEY
- SECRET_KEY
- ADMIN_API_TOKEN
- ADMIN_API_URL
- TURN_SERVER
- TURN_USER
- TURN_PASSWORD
- TURN_STATIC_AUTH_SECRET
- STUN_SERVER
- JITSI_URL
- JITSI_ISS
- MAX_PER_GROUP
- STORE_VARIABLES_FOR_LOCAL_MAPS
labels:
- "traefik.http.routers.back.rule=Host(`${BACK_HOST}`)"
- "traefik.http.routers.back.entryPoints=web"
- "traefik.http.services.back.loadbalancer.server.port=8080"
- "traefik.http.routers.back-ssl.rule=Host(`${BACK_HOST}`)"
- "traefik.http.routers.back-ssl.entryPoints=websecure"
- "traefik.http.routers.back-ssl.service=back"
- "traefik.http.routers.back-ssl.tls=true"
- "traefik.http.routers.back-ssl.tls.certresolver=myresolver"
restart: ${RESTART_POLICY}
icon:
image: matthiasluedtke/iconserver:v3.13.0
labels:
- "traefik.http.routers.icon.rule=Host(`${ICON_HOST}`)"
- "traefik.http.routers.icon.entryPoints=web,traefik"
- "traefik.http.services.icon.loadbalancer.server.port=8080"
- "traefik.http.routers.icon-ssl.rule=Host(`${ICON_HOST}`)"
- "traefik.http.routers.icon-ssl.entryPoints=websecure"
- "traefik.http.routers.icon-ssl.service=icon"
- "traefik.http.routers.icon-ssl.tls=true"
- "traefik.http.routers.icon-ssl.tls.certresolver=myresolver"

Some files were not shown because too many files have changed in this diff Show more