File tree Expand file tree Collapse file tree 3 files changed +18
-11
lines changed
vector/src/main/java/im/vector/app/features/widgets Expand file tree Collapse file tree 3 files changed +18
-11
lines changed Original file line number Diff line number Diff line change 1+ Fix widget permission
Original file line number Diff line number Diff line change @@ -86,8 +86,10 @@ class WidgetFragment @Inject constructor(
8686 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
8787 super .onViewCreated(view, savedInstanceState)
8888 views.widgetWebView.setupForWidget(requireActivity(), checkWebViewPermissionsUseCase, this )
89- if (fragmentArgs.kind.isAdmin()) {
90- viewModel.getPostAPIMediator().setWebView(views.widgetWebView)
89+ withState(viewModel) { state ->
90+ if (state.status == WidgetStatus .WIDGET_ALLOWED ) {
91+ viewModel.getPostAPIMediator().setWebView(views.widgetWebView)
92+ }
9193 }
9294 viewModel.observeViewEvents {
9395 Timber .v(" Observed view events: $it " )
@@ -118,8 +120,10 @@ class WidgetFragment @Inject constructor(
118120 }
119121
120122 override fun onDestroyView () {
121- if (fragmentArgs.kind.isAdmin()) {
122- viewModel.getPostAPIMediator().clearWebView()
123+ withState(viewModel) { state ->
124+ if (state.status == WidgetStatus .WIDGET_ALLOWED ) {
125+ viewModel.getPostAPIMediator().clearWebView()
126+ }
123127 }
124128 views.widgetWebView.clearAfterWidget()
125129 super .onDestroyView()
Original file line number Diff line number Diff line change @@ -77,12 +77,12 @@ class WidgetViewModel @AssistedInject constructor(
7777
7878 init {
7979 integrationManagerService.addListener(this )
80- if (initialState.widgetKind.isAdmin()) {
81- widgetPostAPIHandler = widgetPostAPIHandlerFactory.create(initialState.roomId).apply {
82- navigationCallback = this @WidgetViewModel
83- }
84- postAPIMediator.setHandler(widgetPostAPIHandler)
80+ // WidgetStatus is still unknown
81+ // Nevertheless, we can create the Handler without using it later
82+ widgetPostAPIHandler = widgetPostAPIHandlerFactory.create(initialState.roomId).apply {
83+ navigationCallback = this @WidgetViewModel
8584 }
85+ postAPIMediator.setHandler(widgetPostAPIHandler)
8686 if (! integrationManagerService.isIntegrationEnabled()) {
8787 _viewEvents .post(WidgetViewEvents .Close (null ))
8888 }
@@ -248,8 +248,10 @@ class WidgetViewModel @AssistedInject constructor(
248248 }
249249
250250 private fun handleWebViewLoadingSuccess (action : WidgetAction .OnWebViewLoadingSuccess ) {
251- if (initialState.widgetKind.isAdmin()) {
252- postAPIMediator.injectAPI()
251+ withState { state ->
252+ if (state.status == WidgetStatus .WIDGET_ALLOWED ) {
253+ postAPIMediator.injectAPI()
254+ }
253255 }
254256 setState { copy(webviewLoadedUrl = Success (action.url)) }
255257 }
You can’t perform that action at this time.
0 commit comments