From c4fc20018dad28416d7bfacdd0d8ef4b0f0158d0 Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Thu, 20 Jan 2022 09:40:47 +0000 Subject: [PATCH] Enable the polls feature (#7581) --- .../views/messages/MessageEvent.tsx | 8 ++--- src/components/views/rooms/EventTile.tsx | 7 ---- .../views/rooms/MessageComposer.tsx | 23 ++++--------- src/i18n/strings/en_EN.json | 1 - src/settings/Settings.tsx | 7 ---- src/stores/room-list/MessagePreviewStore.ts | 32 ++++++------------- 6 files changed, 19 insertions(+), 59 deletions(-) diff --git a/src/components/views/messages/MessageEvent.tsx b/src/components/views/messages/MessageEvent.tsx index da4bda1b2f..8b4fa0f51a 100644 --- a/src/components/views/messages/MessageEvent.tsx +++ b/src/components/views/messages/MessageEvent.tsx @@ -125,13 +125,9 @@ export default class MessageEvent extends React.Component implements IMe BodyType = UnknownBody; } + // TODO: this can be done in eventTypes when Polls stabilise if (M_POLL_START.matches(type)) { - // TODO: this can all disappear when Polls comes out of labs - - // instead, add something like this into this.evTypes: - // [EventType.Poll]: "messages.MPollBody" - if (SettingsStore.getValue("feature_polls")) { - BodyType = sdk.getComponent('messages.MPollBody'); - } + BodyType = sdk.getComponent('messages.MPollBody'); } if ( diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 42d71340b3..3d92d6ae12 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -179,13 +179,6 @@ export function getHandlerTile(ev: MatrixEvent): string { } } - if ( - M_POLL_START.matches(type) && - !SettingsStore.getValue("feature_polls") - ) { - return undefined; - } - if (ev.isState()) { if (stateEventSingular.has(type) && ev.getStateKey() !== "") return undefined; return stateEventTileTypes[type]; diff --git a/src/components/views/rooms/MessageComposer.tsx b/src/components/views/rooms/MessageComposer.tsx index 979377a1ed..da7e3ac63b 100644 --- a/src/components/views/rooms/MessageComposer.tsx +++ b/src/components/views/rooms/MessageComposer.tsx @@ -253,7 +253,6 @@ interface IState { isMenuOpen: boolean; showStickers: boolean; showStickersButton: boolean; - showPollsButton: boolean; showLocationButton: boolean; } @@ -285,7 +284,6 @@ export default class MessageComposer extends React.Component { isMenuOpen: false, showStickers: false, showStickersButton: SettingsStore.getValue("MessageComposerInput.showStickersButton"), - showPollsButton: SettingsStore.getValue("feature_polls"), showLocationButton: SettingsStore.getValue("MessageComposerInput.showLocationButton"), }; @@ -293,7 +291,6 @@ export default class MessageComposer extends React.Component { SettingsStore.monitorSetting("MessageComposerInput.showStickersButton", null); SettingsStore.monitorSetting("MessageComposerInput.showLocationButton", null); - SettingsStore.monitorSetting("feature_polls", null); SettingsStore.monitorSetting("feature_location_share", null); } @@ -341,14 +338,6 @@ export default class MessageComposer extends React.Component { break; } - case "feature_polls": { - const showPollsButton = SettingsStore.getValue("feature_polls"); - if (this.state.showPollsButton !== showPollsButton) { - this.setState({ showPollsButton }); - } - break; - } - case "MessageComposerInput.showLocationButton": case "feature_location_share": { const showLocationButton = SettingsStore.getValue( @@ -519,11 +508,13 @@ export default class MessageComposer extends React.Component { let uploadButtonIndex = 0; const buttons: JSX.Element[] = []; if (!this.state.haveRecording) { - if (this.state.showPollsButton) { - buttons.push( - , - ); - } + buttons.push( + , + ); uploadButtonIndex = buttons.length; buttons.push( , diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 86f2e90efb..202c639608 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -883,7 +883,6 @@ "Show message previews for reactions in all rooms": "Show message previews for reactions in all rooms", "Offline encrypted messaging using dehydrated devices": "Offline encrypted messaging using dehydrated devices", "Show extensible event representation of events": "Show extensible event representation of events", - "Polls (under active development)": "Polls (under active development)", "Location sharing (under active development)": "Location sharing (under active development)", "Show info about bridges in room settings": "Show info about bridges in room settings", "New layout switcher (with message bubbles)": "New layout switcher (with message bubbles)", diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 142559ef10..6e92200f0b 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -306,13 +306,6 @@ export const SETTINGS: {[setting: string]: ISetting} = { displayName: _td("Show extensible event representation of events"), default: false, }, - "feature_polls": { - isFeature: true, - labsGroup: LabGroup.Messaging, - supportedLevels: LEVELS_FEATURE, - displayName: _td("Polls (under active development)"), - default: false, - }, "feature_location_share": { isFeature: true, labsGroup: LabGroup.Messaging, diff --git a/src/stores/room-list/MessagePreviewStore.ts b/src/stores/room-list/MessagePreviewStore.ts index 737ddfb2c1..4ab7f96ff6 100644 --- a/src/stores/room-list/MessagePreviewStore.ts +++ b/src/stores/room-list/MessagePreviewStore.ts @@ -31,7 +31,6 @@ import { CallHangupEvent } from "./previews/CallHangupEvent"; import { StickerEventPreview } from "./previews/StickerEventPreview"; import { ReactionEventPreview } from "./previews/ReactionEventPreview"; import { UPDATE_EVENT } from "../AsyncStore"; -import SettingsStore from "../../settings/SettingsStore"; // Emitted event for when a room's preview has changed. First argument will the room for which // the change happened. @@ -62,27 +61,16 @@ const PREVIEWS = { isState: false, previewer: new ReactionEventPreview(), }, + [M_POLL_START.name]: { + isState: false, + previewer: new PollStartEventPreview(), + }, + [M_POLL_START.altName]: { + isState: false, + previewer: new PollStartEventPreview(), + }, }; -function previews(): Object { - // TODO: when polls comes out of labs, add this to PREVIEWS - if (SettingsStore.getValue("feature_polls")) { - return { - [M_POLL_START.name]: { - isState: false, - previewer: new PollStartEventPreview(), - }, - [M_POLL_START.altName]: { - isState: false, - previewer: new PollStartEventPreview(), - }, - ...PREVIEWS, - }; - } else { - return PREVIEWS; - } -} - // The maximum number of events we're willing to look back on to get a preview. const MAX_EVENTS_BACKWARDS = 50; @@ -133,7 +121,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient { } public generatePreviewForEvent(event: MatrixEvent): string { - const previewDef = previews()[event.getType()]; + const previewDef = PREVIEWS[event.getType()]; // TODO: Handle case where we don't have if (!previewDef) return ''; const previewText = previewDef.previewer.getTextFor(event, null, true); @@ -165,7 +153,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient { await this.matrixClient.decryptEventIfNeeded(event); - const previewDef = previews()[event.getType()]; + const previewDef = PREVIEWS[event.getType()]; if (!previewDef) continue; if (previewDef.isState && isNullOrUndefined(event.getStateKey())) continue;