Skip to content

Commit 4bd85a6

Browse files
committed
Fix widget permission
1 parent 7e7b98a commit 4bd85a6

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

changelog.d/5397.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix widget permission

vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff 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()

vector/src/main/java/im/vector/app/features/widgets/WidgetViewModel.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)