mirror of https://github.com/vector-im/riot-web
Enable the polls feature (#7581)
parent
a7a7cb56fe
commit
c4fc20018d
|
@ -125,13 +125,9 @@ export default class MessageEvent extends React.Component<IProps> implements IMe
|
||||||
BodyType = UnknownBody;
|
BodyType = UnknownBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: this can be done in eventTypes when Polls stabilise
|
||||||
if (M_POLL_START.matches(type)) {
|
if (M_POLL_START.matches(type)) {
|
||||||
// TODO: this can all disappear when Polls comes out of labs -
|
BodyType = sdk.getComponent('messages.MPollBody');
|
||||||
// instead, add something like this into this.evTypes:
|
|
||||||
// [EventType.Poll]: "messages.MPollBody"
|
|
||||||
if (SettingsStore.getValue("feature_polls")) {
|
|
||||||
BodyType = sdk.getComponent('messages.MPollBody');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -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 (ev.isState()) {
|
||||||
if (stateEventSingular.has(type) && ev.getStateKey() !== "") return undefined;
|
if (stateEventSingular.has(type) && ev.getStateKey() !== "") return undefined;
|
||||||
return stateEventTileTypes[type];
|
return stateEventTileTypes[type];
|
||||||
|
|
|
@ -253,7 +253,6 @@ interface IState {
|
||||||
isMenuOpen: boolean;
|
isMenuOpen: boolean;
|
||||||
showStickers: boolean;
|
showStickers: boolean;
|
||||||
showStickersButton: boolean;
|
showStickersButton: boolean;
|
||||||
showPollsButton: boolean;
|
|
||||||
showLocationButton: boolean;
|
showLocationButton: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,7 +284,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
|
||||||
isMenuOpen: false,
|
isMenuOpen: false,
|
||||||
showStickers: false,
|
showStickers: false,
|
||||||
showStickersButton: SettingsStore.getValue("MessageComposerInput.showStickersButton"),
|
showStickersButton: SettingsStore.getValue("MessageComposerInput.showStickersButton"),
|
||||||
showPollsButton: SettingsStore.getValue("feature_polls"),
|
|
||||||
showLocationButton: SettingsStore.getValue("MessageComposerInput.showLocationButton"),
|
showLocationButton: SettingsStore.getValue("MessageComposerInput.showLocationButton"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -293,7 +291,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
|
||||||
|
|
||||||
SettingsStore.monitorSetting("MessageComposerInput.showStickersButton", null);
|
SettingsStore.monitorSetting("MessageComposerInput.showStickersButton", null);
|
||||||
SettingsStore.monitorSetting("MessageComposerInput.showLocationButton", null);
|
SettingsStore.monitorSetting("MessageComposerInput.showLocationButton", null);
|
||||||
SettingsStore.monitorSetting("feature_polls", null);
|
|
||||||
SettingsStore.monitorSetting("feature_location_share", null);
|
SettingsStore.monitorSetting("feature_location_share", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,14 +338,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "feature_polls": {
|
|
||||||
const showPollsButton = SettingsStore.getValue("feature_polls");
|
|
||||||
if (this.state.showPollsButton !== showPollsButton) {
|
|
||||||
this.setState({ showPollsButton });
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "MessageComposerInput.showLocationButton":
|
case "MessageComposerInput.showLocationButton":
|
||||||
case "feature_location_share": {
|
case "feature_location_share": {
|
||||||
const showLocationButton = SettingsStore.getValue(
|
const showLocationButton = SettingsStore.getValue(
|
||||||
|
@ -519,11 +508,13 @@ export default class MessageComposer extends React.Component<IProps, IState> {
|
||||||
let uploadButtonIndex = 0;
|
let uploadButtonIndex = 0;
|
||||||
const buttons: JSX.Element[] = [];
|
const buttons: JSX.Element[] = [];
|
||||||
if (!this.state.haveRecording) {
|
if (!this.state.haveRecording) {
|
||||||
if (this.state.showPollsButton) {
|
buttons.push(
|
||||||
buttons.push(
|
<PollButton
|
||||||
<PollButton key="polls" room={this.props.room} narrowMode={this.state.narrowMode} />,
|
key="polls"
|
||||||
);
|
room={this.props.room}
|
||||||
}
|
narrowMode={this.state.narrowMode}
|
||||||
|
/>,
|
||||||
|
);
|
||||||
uploadButtonIndex = buttons.length;
|
uploadButtonIndex = buttons.length;
|
||||||
buttons.push(
|
buttons.push(
|
||||||
<UploadButton key="controls_upload" roomId={this.props.room.roomId} relation={this.props.relation} />,
|
<UploadButton key="controls_upload" roomId={this.props.room.roomId} relation={this.props.relation} />,
|
||||||
|
|
|
@ -883,7 +883,6 @@
|
||||||
"Show message previews for reactions in all rooms": "Show message previews for reactions in all rooms",
|
"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",
|
"Offline encrypted messaging using dehydrated devices": "Offline encrypted messaging using dehydrated devices",
|
||||||
"Show extensible event representation of events": "Show extensible event representation of events",
|
"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)",
|
"Location sharing (under active development)": "Location sharing (under active development)",
|
||||||
"Show info about bridges in room settings": "Show info about bridges in room settings",
|
"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)",
|
"New layout switcher (with message bubbles)": "New layout switcher (with message bubbles)",
|
||||||
|
|
|
@ -306,13 +306,6 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
displayName: _td("Show extensible event representation of events"),
|
displayName: _td("Show extensible event representation of events"),
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
"feature_polls": {
|
|
||||||
isFeature: true,
|
|
||||||
labsGroup: LabGroup.Messaging,
|
|
||||||
supportedLevels: LEVELS_FEATURE,
|
|
||||||
displayName: _td("Polls (under active development)"),
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
"feature_location_share": {
|
"feature_location_share": {
|
||||||
isFeature: true,
|
isFeature: true,
|
||||||
labsGroup: LabGroup.Messaging,
|
labsGroup: LabGroup.Messaging,
|
||||||
|
|
|
@ -31,7 +31,6 @@ import { CallHangupEvent } from "./previews/CallHangupEvent";
|
||||||
import { StickerEventPreview } from "./previews/StickerEventPreview";
|
import { StickerEventPreview } from "./previews/StickerEventPreview";
|
||||||
import { ReactionEventPreview } from "./previews/ReactionEventPreview";
|
import { ReactionEventPreview } from "./previews/ReactionEventPreview";
|
||||||
import { UPDATE_EVENT } from "../AsyncStore";
|
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
|
// Emitted event for when a room's preview has changed. First argument will the room for which
|
||||||
// the change happened.
|
// the change happened.
|
||||||
|
@ -62,27 +61,16 @@ const PREVIEWS = {
|
||||||
isState: false,
|
isState: false,
|
||||||
previewer: new ReactionEventPreview(),
|
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.
|
// The maximum number of events we're willing to look back on to get a preview.
|
||||||
const MAX_EVENTS_BACKWARDS = 50;
|
const MAX_EVENTS_BACKWARDS = 50;
|
||||||
|
|
||||||
|
@ -133,7 +121,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient<IState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public generatePreviewForEvent(event: MatrixEvent): string {
|
public generatePreviewForEvent(event: MatrixEvent): string {
|
||||||
const previewDef = previews()[event.getType()];
|
const previewDef = PREVIEWS[event.getType()];
|
||||||
// TODO: Handle case where we don't have
|
// TODO: Handle case where we don't have
|
||||||
if (!previewDef) return '';
|
if (!previewDef) return '';
|
||||||
const previewText = previewDef.previewer.getTextFor(event, null, true);
|
const previewText = previewDef.previewer.getTextFor(event, null, true);
|
||||||
|
@ -165,7 +153,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
await this.matrixClient.decryptEventIfNeeded(event);
|
await this.matrixClient.decryptEventIfNeeded(event);
|
||||||
|
|
||||||
const previewDef = previews()[event.getType()];
|
const previewDef = PREVIEWS[event.getType()];
|
||||||
if (!previewDef) continue;
|
if (!previewDef) continue;
|
||||||
if (previewDef.isState && isNullOrUndefined(event.getStateKey())) continue;
|
if (previewDef.isState && isNullOrUndefined(event.getStateKey())) continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue