diff --git a/go.mod b/go.mod index b521891fa..310fc53cd 100644 --- a/go.mod +++ b/go.mod @@ -3,21 +3,20 @@ module github.com/mattermost/mattermost-plugin-calls go 1.19 require ( - github.com/gorilla/websocket v1.5.0 github.com/pion/ice/v2 v2.3.3 // indirect github.com/pion/rtcp v1.2.10 github.com/pion/webrtc/v3 v3.1.60 - github.com/prometheus/client_golang v1.15.0 - github.com/stretchr/testify v1.8.3 + github.com/prometheus/client_golang v1.16.0 + github.com/stretchr/testify v1.8.4 ) require ( github.com/Masterminds/semver v1.5.0 + github.com/gorilla/websocket v1.5.0 github.com/mattermost/calls-offloader v0.3.2 github.com/mattermost/calls-recorder v0.4.2 github.com/mattermost/logr/v2 v2.0.16 - github.com/mattermost/mattermost/server/public v0.0.0-20230613002302-62a3ee8adcb5 - github.com/mattermost/mattermost/server/v8 v8.0.0-20230622213803-fece5d5dd276 + github.com/mattermost/mattermost/server/public v0.0.9-0.20230824163353-69c11cfe1403 github.com/mattermost/rtcd v0.11.1 github.com/mattermost/squirrel v0.2.0 github.com/pion/interceptor v0.1.12 @@ -34,8 +33,7 @@ require ( git.mills.io/prologic/bitcask v1.0.2 // indirect github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/blang/semver v3.5.1+incompatible // indirect - github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dyatlov/go-opengraph/opengraph v0.0.0-20220524092352-606d7b1e5f8a // indirect @@ -47,7 +45,7 @@ require ( github.com/google/uuid v1.3.0 // indirect github.com/graph-gophers/graphql-go v1.5.1-0.20230110080634-edea822f558a // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-plugin v1.4.9 // indirect + github.com/hashicorp/go-plugin v1.4.10 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect @@ -55,7 +53,7 @@ require ( github.com/mattermost/go-i18n v1.11.1-0.20211013152124-5c415071e404 // indirect github.com/mattermost/ldap v3.0.4+incompatible // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oklog/run v1.1.0 // indirect @@ -75,28 +73,28 @@ require ( github.com/pion/turn/v2 v2.1.0 // indirect github.com/plar/go-adaptive-radix-tree v1.0.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.0 // indirect github.com/pyroscope-io/godeltaprof v0.1.1 // indirect github.com/segmentio/backo-go v1.0.1 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tinylib/msgp v1.1.8 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/wiggin77/merror v1.0.4 // indirect + github.com/wiggin77/merror v1.0.5 // indirect github.com/wiggin77/srslog v1.0.1 // indirect github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect - golang.org/x/crypto v0.9.0 // indirect + golang.org/x/crypto v0.10.0 // indirect golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.54.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/grpc v1.56.1 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 4a548f61b..2c49dc2c5 100644 --- a/go.sum +++ b/go.sum @@ -67,10 +67,9 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -236,8 +235,8 @@ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.4.9 h1:ESiK220/qE0aGxWdzKIvRH69iLiuN/PjoLTm69RoWtU= -github.com/hashicorp/go-plugin v1.4.9/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= +github.com/hashicorp/go-plugin v1.4.10 h1:xUbmA4jC6Dq163/fWcp8P3JuHilrHHMLNRxzGQJ9hNk= +github.com/hashicorp/go-plugin v1.4.10/go.mod h1:6/1TEzT0eQznvI/gV2CM29DLSkAK/e58mUWKVsPaph0= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -299,10 +298,8 @@ github.com/mattermost/ldap v3.0.4+incompatible h1:SOeNnz+JNR+foQ3yHkYqijb9MLPhXN github.com/mattermost/ldap v3.0.4+incompatible/go.mod h1:b4reDCcGpBxJ4WX0f224KFY+OR0npin7or7EFpeIko4= github.com/mattermost/logr/v2 v2.0.16 h1:jnePX4cPskC3WDFvUardh/xZfxNdsFXbEERJQ1kUEDE= github.com/mattermost/logr/v2 v2.0.16/go.mod h1:1dm/YhTpozsqANXxo5Pi5zYLBsal2xY0pX+JZNbzYJY= -github.com/mattermost/mattermost/server/public v0.0.0-20230613002302-62a3ee8adcb5 h1:X8ue+QQn0VJe6qR0q2kHGFhQCn5T4rqb7XS0t6R1r3A= -github.com/mattermost/mattermost/server/public v0.0.0-20230613002302-62a3ee8adcb5/go.mod h1:TtECPYX/ftU43bCGqN5W3Ic2gPDN2+zeKhXfE2YPRvw= -github.com/mattermost/mattermost/server/v8 v8.0.0-20230622213803-fece5d5dd276 h1:MTuN/jEH4XxCdhM2L+Xl0sDWVqm6nETzRZTczzpfzks= -github.com/mattermost/mattermost/server/v8 v8.0.0-20230622213803-fece5d5dd276/go.mod h1:RAgzlRBZin+otiYdmrLHGdXkplEzVH5AfFzSKxdpT8A= +github.com/mattermost/mattermost/server/public v0.0.9-0.20230824163353-69c11cfe1403 h1:/rxsEaisu+Rb5mWfoIEnbFqscJeKVkspj+BWzchUAfs= +github.com/mattermost/mattermost/server/public v0.0.9-0.20230824163353-69c11cfe1403/go.mod h1:sgXQrYzs+IJy51mB8E8OBljagk2u3YwQRoYlBH5goiw= github.com/mattermost/rtcd v0.11.1 h1:xaP/s0/WX8rDqHq05l8b4QLLJuRZXucr9Qh6cHTQSHk= github.com/mattermost/rtcd v0.11.1/go.mod h1:ketmoC7+9IOjynE5YJgR6GrFTG1b78byVlkVsLcCDa0= github.com/mattermost/squirrel v0.2.0 h1:8ZWeyf+MWQ2cL7hu9REZgLtz2IJi51qqZEovI3T3TT8= @@ -316,8 +313,8 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -418,23 +415,23 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= +github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pyroscope-io/godeltaprof v0.1.1 h1:+Mmi+b9gR3s/qufuQSxOBjyXZR1fmvS/C12Q73PIPvw= github.com/pyroscope-io/godeltaprof v0.1.1/go.mod h1:psMITXp90+8pFenXkKIpNhrfmI9saQnPbba27VIaiQE= @@ -477,8 +474,8 @@ github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYED github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= @@ -518,8 +515,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tidwall/btree v0.4.2/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= @@ -542,8 +540,8 @@ github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9 github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/wiggin77/merror v1.0.4 h1:XxFLEevmQQfgJW2AxhapuMG7C1fQqfbim/XyUmYv/ZM= -github.com/wiggin77/merror v1.0.4/go.mod h1:H2ETSu7/bPE0Ymf4bEwdUoo73OOEkdClnoRisfw0Nm0= +github.com/wiggin77/merror v1.0.5 h1:P+lzicsn4vPMycAf2mFf7Zk6G9eco5N+jB1qJ2XW3ME= +github.com/wiggin77/merror v1.0.5/go.mod h1:H2ETSu7/bPE0Ymf4bEwdUoo73OOEkdClnoRisfw0Nm0= github.com/wiggin77/srslog v1.0.1 h1:gA2XjSMy3DrRdX9UqLuDtuVAAshb8bE1NhX1YK0Qe+8= github.com/wiggin77/srslog v1.0.1/go.mod h1:fehkyYDq1QfuYn60TDPu9YdY2bB85VUW2mvN1WynEls= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -592,8 +590,9 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -691,8 +690,9 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -816,8 +816,9 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -991,8 +992,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1005,8 +1006,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= diff --git a/server/bot_api.go b/server/bot_api.go index 03a200e9b..bca591fb1 100644 --- a/server/bot_api.go +++ b/server/bot_api.go @@ -229,7 +229,7 @@ func (p *Plugin) handleBotPostRecordings(w http.ResponseWriter, r *http.Request, UserId: p.getBotID(), ChannelId: callID, Message: postMsg, - Type: "custom_calls_recording", + Type: callRecordingPostType, RootId: threadID, FileIds: []string{fileID}, } diff --git a/server/plugin.go b/server/plugin.go index 753a0e82a..241dd90eb 100644 --- a/server/plugin.go +++ b/server/plugin.go @@ -23,6 +23,11 @@ import ( "github.com/mattermost/mattermost/server/public/plugin" ) +const ( + callStartPostType = "custom_calls" + callRecordingPostType = "custom_calls_recording" +) + // Plugin implements the interface expected by the Mattermost server to communicate between the server and plugin processes. type Plugin struct { plugin.MattermostPlugin @@ -306,7 +311,7 @@ func (p *Plugin) createCallStartedPost(state *channelState, userID, channelID, t ChannelId: channelID, RootId: threadID, Message: postMsg, - Type: "custom_calls", + Type: callStartPostType, Props: map[string]interface{}{ "attachments": []*model.SlackAttachment{&slackAttachment}, "start_at": state.Call.StartAt, @@ -322,6 +327,8 @@ func (p *Plugin) createCallStartedPost(state *channelState, userID, channelID, t threadID = createdPost.Id } + p.sendPushNotifications(channelID, createdPost.Id, threadID, user, cfg) + return createdPost.Id, threadID, nil } diff --git a/server/push_notifications.go b/server/push_notifications.go new file mode 100644 index 000000000..5cfa2d013 --- /dev/null +++ b/server/push_notifications.go @@ -0,0 +1,114 @@ +package main + +import ( + "fmt" + "github.com/mattermost/mattermost/server/public/model" +) + +func (p *Plugin) NotificationWillBePushed(notification *model.PushNotification, userID string) (*model.PushNotification, string) { + // We will use our own notifications if: + // 1. This is a call start post + // 2. We have enabled ringing + // 3. The channel is a DM or GM + if notification.PostType != callStartPostType || !*p.getConfiguration().EnableRinging { + return nil, "" + } + + if notification.ChannelType == model.ChannelTypeDirect || notification.ChannelType == model.ChannelTypeGroup { + return nil, "calls plugin will handle this notification" + } + + // If it's a regular channel, then the user must have notifications set to all. + // In that case, make the notification nicer. + if notification.IsIdLoaded { + notification.Message = buildGenericPushNotificationMessage() + return notification, "" + } + + nameFormat := p.getNotificationNameFormat(userID) + sender, appErr := p.API.GetUser(notification.SenderId) + if appErr != nil { + p.LogError("failed to get sender user", "error", appErr.Error()) + return nil, "" + } + senderName := sender.GetDisplayName(nameFormat) + notification.Message = buildPushNotificationMessage(senderName) + + return notification, "" +} + +func (p *Plugin) sendPushNotifications(channelID, createdPostID, threadID string, sender *model.User, config *model.Config) { + channel, appErr := p.API.GetChannel(channelID) + if appErr != nil { + p.LogError("failed to get channel", "error", appErr.Error()) + return + } + + if channel.Type != model.ChannelTypeDirect && channel.Type != model.ChannelTypeGroup { + return + } + + members, appErr := p.API.GetUsersInChannel(channelID, model.ChannelSortByUsername, 0, 8) + if appErr != nil { + p.LogError("failed to get channel users", "error", appErr.Error()) + return + } + + for _, member := range members { + if member.Id == sender.Id { + continue + } + + msg := &model.PushNotification{ + Version: model.PushMessageV2, + Type: model.PushTypeMessage, + TeamId: channel.TeamId, + ChannelId: channelID, + PostId: createdPostID, + RootId: threadID, + SenderId: sender.Id, + ChannelType: channel.Type, + Message: buildGenericPushNotificationMessage(), + } + + // This is ugly. + if *config.EmailSettings.PushNotificationContents == model.IdLoadedNotification { + msg.IsIdLoaded = p.checkLicenseForIDLoaded() + } else { + nameFormat := p.getNotificationNameFormat(member.Id) + channelName := getChannelNameForNotification(channel, sender, members, nameFormat, member.Id) + senderName := sender.GetDisplayName(nameFormat) + msg.SenderName = senderName + msg.ChannelName = channelName + + if *config.EmailSettings.PushNotificationContents == model.GenericNoChannelNotification && channel.Type != model.ChannelTypeDirect { + msg.ChannelName = "" + } + if *config.EmailSettings.PushNotificationContents == model.FullNotification { + msg.Message = buildPushNotificationMessage(senderName) + } + } + + if err := p.API.SendPushNotification(msg, member.Id); err != nil { + p.LogError(fmt.Sprintf("failed to send push notification for userID: %s", member.Id), "error", err.Error()) + } + } +} + +func (p *Plugin) checkLicenseForIDLoaded() bool { + licence := p.API.GetLicense() + if licence == nil || licence.Features == nil || licence.Features.IDLoadedPushNotifications == nil { + return false + } + return *licence.Features.IDLoadedPushNotifications +} + +func buildPushNotificationMessage(senderName string) string { + // TODO: translations https://mattermost.atlassian.net/browse/MM-54256 + return fmt.Sprintf("\u200b%s is inviting you to a call", senderName) +} + +func buildGenericPushNotificationMessage() string { + // TODO: translations https://mattermost.atlassian.net/browse/MM-54256 + return "You've been invited to a call" +} diff --git a/server/store.go b/server/store.go index d226f05db..718f05201 100644 --- a/server/store.go +++ b/server/store.go @@ -6,9 +6,9 @@ package main import ( "database/sql" "fmt" + "github.com/mattermost/mattermost/server/public/shared/driver" "github.com/mattermost/mattermost/server/public/model" - "github.com/mattermost/mattermost/server/v8/platform/shared/driver" sq "github.com/mattermost/squirrel" ) diff --git a/server/utils.go b/server/utils.go index fe7129396..d8f73326d 100644 --- a/server/utils.go +++ b/server/utils.go @@ -7,10 +7,12 @@ import ( "bytes" "compress/zlib" "fmt" + "github.com/mattermost/mattermost/server/public/model" "io" "math" "net/http" "net/url" + "sort" "strconv" "strings" "time" @@ -39,6 +41,43 @@ func (p *Plugin) setHandlerID(nodeID string) error { return nil } +func (p *Plugin) getNotificationNameFormat(userID string) string { + config := p.API.GetConfig() + if !*config.PrivacySettings.ShowFullName { + return model.ShowUsername + } + + if preferences, appErr := p.API.GetPreferencesForUser(userID); appErr == nil { + for _, pref := range preferences { + if pref.Category == model.PreferenceCategoryDisplaySettings && pref.Name == model.PreferenceNameNameFormat { + return pref.Value + } + } + } + + return *config.TeamSettings.TeammateNameDisplay +} + +func getChannelNameForNotification(channel *model.Channel, sender *model.User, users []*model.User, nameFormat, excludeID string) string { + switch channel.Type { + case model.ChannelTypeDirect: + return sender.GetDisplayNameWithPrefix(nameFormat, "@") + case model.ChannelTypeGroup: + var names []string + for _, user := range users { + if user.Id != excludeID { + names = append(names, user.GetDisplayName(nameFormat)) + } + } + + sort.Strings(names) + + return strings.Join(names, ", ") + default: + return channel.DisplayName + } +} + func unpackSDPData(data []byte) ([]byte, error) { buf := bytes.NewBuffer(data) rd, err := zlib.NewReader(buf) diff --git a/webapp/src/constants.ts b/webapp/src/constants.ts index 8764fdf5a..30cac2349 100644 --- a/webapp/src/constants.ts +++ b/webapp/src/constants.ts @@ -8,8 +8,10 @@ export const JOINED_USER_NOTIFICATION_TIMEOUT = 5000; export const MAX_CHANNEL_LINK_TOOLTIP_NAMES = 8; export const RING_LENGTH = 30000; export const DEFAULT_RING_SOUND = 'Calm'; +export const CALL_START_POST_TYPE = 'custom_calls'; +export const CALL_RECORDING_POST_TYPE = 'custom_calls_recording'; -export const CallAlertConfigs: {[key: string]: CallAlertConfig} = { +export const CallAlertConfigs: { [key: string]: CallAlertConfig } = { missingAudioInput: { type: CallAlertType.Error, icon: 'microphone', diff --git a/webapp/src/desktop_notifications.ts b/webapp/src/desktop_notifications.ts index eea67e2a5..517812a5c 100644 --- a/webapp/src/desktop_notifications.ts +++ b/webapp/src/desktop_notifications.ts @@ -2,6 +2,7 @@ import {Channel} from '@mattermost/types/channels'; import {Post} from '@mattermost/types/posts'; import {DesktopNotificationArgs, Store} from 'src/types/mattermost-webapp'; +import {CALL_START_POST_TYPE} from 'src/constants'; import {ringingEnabled} from 'src/selectors'; import {isDmGmChannel} from 'src/utils'; @@ -15,7 +16,7 @@ export function desktopNotificationHandler(store: Store, post: Post, channel: Ch // 5. MM server is >= v8.1.0 (if not, this handler will not be called) // @ts-ignore our imported webapp types are old - if (post.type === 'custom_calls' && + if (post.type === CALL_START_POST_TYPE && isDmGmChannel(channel) && ringingEnabled(store.getState())) { return {args: {...args, notify: false}}; diff --git a/webapp/src/index.tsx b/webapp/src/index.tsx index 29d7a0df4..655eec5cd 100644 --- a/webapp/src/index.tsx +++ b/webapp/src/index.tsx @@ -1,18 +1,14 @@ /* eslint-disable max-lines */ -import {UserState, CallChannelState} from '@calls/common/lib/types'; +import {CallChannelState, UserState} from '@calls/common/lib/types'; import {getChannel as getChannelAction} from 'mattermost-redux/actions/channels'; import {getProfilesByIds as getProfilesByIdsAction} from 'mattermost-redux/actions/users'; import {Client4} from 'mattermost-redux/client'; -import {getCurrentChannelId, getChannel} from 'mattermost-redux/selectors/entities/channels'; +import {getChannel, getCurrentChannelId} from 'mattermost-redux/selectors/entities/channels'; import {getConfig} from 'mattermost-redux/selectors/entities/general'; import {getCurrentUserLocale} from 'mattermost-redux/selectors/entities/i18n'; import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; -import { - getCurrentUserId, - getUser, - isCurrentUserSystemAdmin, -} from 'mattermost-redux/selectors/entities/users'; +import {getCurrentUserId, getUser, isCurrentUserSystemAdmin} from 'mattermost-redux/selectors/entities/users'; import React from 'react'; import ReactDOM from 'react-dom'; import {injectIntl, IntlProvider} from 'react-intl'; @@ -21,12 +17,12 @@ import {AnyAction} from 'redux'; import {batchActions} from 'redux-batched-actions'; import { - displayFreeTrial, - getCallsConfig, displayCallErrorModal, - showScreenSourceModal, displayCallsTestModeUser, + displayFreeTrial, + getCallsConfig, incomingCallOnChannel, + showScreenSourceModal, showSwitchCallModal, } from 'src/actions'; import EnableIPv6 from 'src/components/admin_console_settings/enable_ipv6'; @@ -45,29 +41,29 @@ import UDPServerPort from 'src/components/admin_console_settings/udp_server_port import {PostTypeCloudTrialRequest} from 'src/components/custom_post_types/post_type_cloud_trial_request'; import {PostTypeRecording} from 'src/components/custom_post_types/post_type_recording'; import {IncomingCallContainer} from 'src/components/incoming_calls/call_container'; -import {DisabledCallsErr} from 'src/constants'; +import {CALL_RECORDING_POST_TYPE, CALL_START_POST_TYPE, DisabledCallsErr} from 'src/constants'; import {desktopNotificationHandler} from 'src/desktop_notifications'; import slashCommandsHandler from 'src/slash_commands'; import {CallActions, CurrentCallData, CurrentCallDataDefault} from 'src/types/types'; import { + DESKTOP_WIDGET_CONNECTED, RECEIVED_CHANNEL_STATE, - VOICE_CHANNEL_USER_CONNECTED, - VOICE_CHANNEL_USERS_CONNECTED, - VOICE_CHANNEL_USERS_CONNECTED_STATES, - VOICE_CHANNEL_PROFILES_CONNECTED, - VOICE_CHANNEL_CALL_START, - VOICE_CHANNEL_USER_SCREEN_ON, - VOICE_CHANNEL_UNINIT, - VOICE_CHANNEL_ROOT_POST, SHOW_SWITCH_CALL_MODAL, - DESKTOP_WIDGET_CONNECTED, VOICE_CHANNEL_CALL_HOST, VOICE_CHANNEL_CALL_RECORDING_STATE, + VOICE_CHANNEL_CALL_START, + VOICE_CHANNEL_PROFILES_CONNECTED, + VOICE_CHANNEL_ROOT_POST, + VOICE_CHANNEL_UNINIT, + VOICE_CHANNEL_USER_CONNECTED, VOICE_CHANNEL_USER_MUTED, - VOICE_CHANNEL_USER_UNMUTED, VOICE_CHANNEL_USER_RAISE_HAND, + VOICE_CHANNEL_USER_SCREEN_ON, + VOICE_CHANNEL_USER_UNMUTED, VOICE_CHANNEL_USER_UNRAISE_HAND, + VOICE_CHANNEL_USERS_CONNECTED, + VOICE_CHANNEL_USERS_CONNECTED_STATES, } from './action_types'; import CallsClient from './client'; import CallWidget from './components/call_widget'; @@ -81,63 +77,60 @@ import EndCallModal from './components/end_call_modal'; import ExpandedView from './components/expanded_view'; import ScreenSourceModal from './components/screen_source_modal'; import SwitchCallModal from './components/switch_call_modal'; -import {logErr, logDebug} from './log'; +import {logDebug, logErr} from './log'; import {pluginId} from './manifest'; import reducer from './reducers'; import { + callsConfig, + callsExplicitlyDisabled, + callsExplicitlyEnabled, + channelHasCall, connectedChannelID, - voiceConnectedUsers, - voiceConnectedUsersInChannel, - voiceChannelCallStartAt, - isLimitRestricted, - iceServers, - needsTURNCredentials, defaultEnabled, - isCloudStarter, - channelHasCall, - callsExplicitlyEnabled, - callsExplicitlyDisabled, hasPermissionsToEnableCalls, - callsConfig, + iceServers, + isCloudStarter, + isLimitRestricted, + needsTURNCredentials, ringingEnabled, + voiceChannelCallStartAt, + voiceConnectedUsers, + voiceConnectedUsersInChannel, } from './selectors'; -import { - JOIN_CALL, - keyToAction, -} from './shortcuts'; +import {JOIN_CALL, keyToAction} from './shortcuts'; import {PluginRegistry, Store} from './types/mattermost-webapp'; import { - getPluginPath, + desktopGTE, + followThread, + getChannelURL, getExpandedChannelID, + getPluginPath, getProfilesByIds, - isDMChannel, + getTranslations, getUserIdFromDM, getWSConnectionURL, + isDMChannel, playSound, - followThread, - shouldRenderDesktopWidget, sendDesktopEvent, - getChannelURL, - getTranslations, - desktopGTE, + shouldRenderDesktopWidget, } from './utils'; import { + handleCallEnd, + handleCallHostChanged, + handleCallRecordingState, + handleCallStart, handleUserConnected, handleUserDisconnected, - handleCallStart, - handleCallEnd, + handleUserDismissedNotification, handleUserMuted, - handleUserUnmuted, - handleUserScreenOn, - handleUserScreenOff, - handleUserVoiceOn, - handleUserVoiceOff, handleUserRaisedHand, - handleUserUnraisedHand, handleUserReaction, - handleCallHostChanged, - handleCallRecordingState, - handleUserDismissedNotification, + handleUserScreenOff, + handleUserScreenOn, + handleUserUnmuted, + handleUserUnraisedHand, + handleUserVoiceOff, + handleUserVoiceOn, } from './websocket_handlers'; export default class Plugin { @@ -252,8 +245,8 @@ export default class Plugin { const sidebarChannelLinkLabelComponentID = registry.registerSidebarChannelLinkLabelComponent(ChannelLinkLabel); this.unsubscribers.push(() => registry.unregisterComponent(sidebarChannelLinkLabelComponentID)); registry.registerChannelToastComponent(injectIntl(ChannelCallToast)); - registry.registerPostTypeComponent('custom_calls', PostType); - registry.registerPostTypeComponent('custom_calls_recording', PostTypeRecording); + registry.registerPostTypeComponent(CALL_START_POST_TYPE, PostType); + registry.registerPostTypeComponent(CALL_RECORDING_POST_TYPE, PostTypeRecording); registry.registerPostTypeComponent('custom_cloud_trial_req', PostTypeCloudTrialRequest); registry.registerNeedsTeamRoute('/expanded', injectIntl(ExpandedView)); registry.registerGlobalComponent(injectIntl(SwitchCallModal));