Merge pull request #6726 from SimonBrandner/feature/autoplay-split
Split autoplay GIFs and videos into different settings
This commit is contained in:
commit
99a0bd935b
6 changed files with 32 additions and 10 deletions
|
@ -128,7 +128,7 @@ export default class MImageBody extends React.Component<IBodyProps, IState> {
|
||||||
private onImageEnter = (e: React.MouseEvent<HTMLImageElement>): void => {
|
private onImageEnter = (e: React.MouseEvent<HTMLImageElement>): void => {
|
||||||
this.setState({ hover: true });
|
this.setState({ hover: true });
|
||||||
|
|
||||||
if (!this.state.showImage || !this.isGif() || SettingsStore.getValue("autoplayGifsAndVideos")) {
|
if (!this.state.showImage || !this.isGif() || SettingsStore.getValue("autoplayGifs")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const imgElement = e.currentTarget;
|
const imgElement = e.currentTarget;
|
||||||
|
@ -138,7 +138,7 @@ export default class MImageBody extends React.Component<IBodyProps, IState> {
|
||||||
private onImageLeave = (e: React.MouseEvent<HTMLImageElement>): void => {
|
private onImageLeave = (e: React.MouseEvent<HTMLImageElement>): void => {
|
||||||
this.setState({ hover: false });
|
this.setState({ hover: false });
|
||||||
|
|
||||||
if (!this.state.showImage || !this.isGif() || SettingsStore.getValue("autoplayGifsAndVideos")) {
|
if (!this.state.showImage || !this.isGif() || SettingsStore.getValue("autoplayGifs")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const imgElement = e.currentTarget;
|
const imgElement = e.currentTarget;
|
||||||
|
@ -387,7 +387,7 @@ export default class MImageBody extends React.Component<IBodyProps, IState> {
|
||||||
showPlaceholder = false; // because we're hiding the image, so don't show the placeholder.
|
showPlaceholder = false; // because we're hiding the image, so don't show the placeholder.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isGif() && !SettingsStore.getValue("autoplayGifsAndVideos") && !this.state.hover) {
|
if (this.isGif() && !SettingsStore.getValue("autoplayGifs") && !this.state.hover) {
|
||||||
gifLabel = <p className="mx_MImageBody_gifLabel">GIF</p>;
|
gifLabel = <p className="mx_MImageBody_gifLabel">GIF</p>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,7 +487,7 @@ export default class MImageBody extends React.Component<IBodyProps, IState> {
|
||||||
|
|
||||||
const contentUrl = this.getContentUrl();
|
const contentUrl = this.getContentUrl();
|
||||||
let thumbUrl;
|
let thumbUrl;
|
||||||
if (this.isGif() && SettingsStore.getValue("autoplayGifsAndVideos")) {
|
if (this.isGif() && SettingsStore.getValue("autoplayGifs")) {
|
||||||
thumbUrl = contentUrl;
|
thumbUrl = contentUrl;
|
||||||
} else {
|
} else {
|
||||||
thumbUrl = this.getThumbUrl();
|
thumbUrl = this.getThumbUrl();
|
||||||
|
|
|
@ -145,7 +145,7 @@ export default class MVideoBody extends React.PureComponent<IBodyProps, IState>
|
||||||
}
|
}
|
||||||
|
|
||||||
async componentDidMount() {
|
async componentDidMount() {
|
||||||
const autoplay = SettingsStore.getValue("autoplayGifsAndVideos") as boolean;
|
const autoplay = SettingsStore.getValue("autoplayVideo") as boolean;
|
||||||
this.loadBlurhash();
|
this.loadBlurhash();
|
||||||
|
|
||||||
if (this.props.mediaEventHelper.media.isEncrypted && this.state.decryptedUrl === null) {
|
if (this.props.mediaEventHelper.media.isEncrypted && this.state.decryptedUrl === null) {
|
||||||
|
@ -209,7 +209,7 @@ export default class MVideoBody extends React.PureComponent<IBodyProps, IState>
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const content = this.props.mxEvent.getContent();
|
const content = this.props.mxEvent.getContent();
|
||||||
const autoplay = SettingsStore.getValue("autoplayGifsAndVideos");
|
const autoplay = SettingsStore.getValue("autoplayVideo");
|
||||||
|
|
||||||
if (this.state.error !== null) {
|
if (this.state.error !== null) {
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -172,7 +172,8 @@ export default class PreferencesUserSettingsTab extends React.Component<IProps,
|
||||||
];
|
];
|
||||||
static IMAGES_AND_VIDEOS_SETTINGS = [
|
static IMAGES_AND_VIDEOS_SETTINGS = [
|
||||||
'urlPreviewsEnabled',
|
'urlPreviewsEnabled',
|
||||||
'autoplayGifsAndVideos',
|
'autoplayGifs',
|
||||||
|
'autoplayVideo',
|
||||||
'showImages',
|
'showImages',
|
||||||
];
|
];
|
||||||
static TIMELINE_SETTINGS = [
|
static TIMELINE_SETTINGS = [
|
||||||
|
|
|
@ -834,7 +834,8 @@
|
||||||
"Show read receipts sent by other users": "Show read receipts sent by other users",
|
"Show read receipts sent by other users": "Show read receipts sent by other users",
|
||||||
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)",
|
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)",
|
||||||
"Always show message timestamps": "Always show message timestamps",
|
"Always show message timestamps": "Always show message timestamps",
|
||||||
"Autoplay GIFs and videos": "Autoplay GIFs and videos",
|
"Autoplay GIFs": "Autoplay GIFs",
|
||||||
|
"Autoplay videos": "Autoplay videos",
|
||||||
"Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting",
|
"Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting",
|
||||||
"Expand code blocks by default": "Expand code blocks by default",
|
"Expand code blocks by default": "Expand code blocks by default",
|
||||||
"Show line numbers in code blocks": "Show line numbers in code blocks",
|
"Show line numbers in code blocks": "Show line numbers in code blocks",
|
||||||
|
|
|
@ -393,9 +393,14 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
displayName: _td('Always show message timestamps'),
|
displayName: _td('Always show message timestamps'),
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
"autoplayGifsAndVideos": {
|
"autoplayGifs": {
|
||||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||||
displayName: _td('Autoplay GIFs and videos'),
|
displayName: _td('Autoplay GIFs'),
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
"autoplayVideo": {
|
||||||
|
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||||
|
displayName: _td('Autoplay videos'),
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
"enableSyntaxHighlightLanguageDetection": {
|
"enableSyntaxHighlightLanguageDetection": {
|
||||||
|
|
|
@ -110,6 +110,21 @@ export default class AccountSettingsHandler extends MatrixClientBackedSettingsHa
|
||||||
return content ? content['enabled'] : null;
|
return content ? content['enabled'] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special case for autoplaying videos and GIFs
|
||||||
|
if (["autoplayGifs", "autoplayVideo"].includes(settingName)) {
|
||||||
|
const settings = this.getSettings() || {};
|
||||||
|
const value = settings[settingName];
|
||||||
|
// Fallback to old combined setting
|
||||||
|
if (value === null || value === undefined) {
|
||||||
|
const oldCombinedValue = settings["autoplayGifsAndVideos"];
|
||||||
|
// Write, so that we can remove this in the future
|
||||||
|
this.setValue("autoplayGifs", roomId, oldCombinedValue);
|
||||||
|
this.setValue("autoplayVideo", roomId, oldCombinedValue);
|
||||||
|
return oldCombinedValue;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
const settings = this.getSettings() || {};
|
const settings = this.getSettings() || {};
|
||||||
let preferredValue = settings[settingName];
|
let preferredValue = settings[settingName];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue