Settings onClick functionality

pull/717/head
Vincent 6 years ago
parent f71dc98fcc
commit 8c9854dd90

@ -54,9 +54,6 @@ const {
} = require('../../ts/components/DevicePairingDialog'); } = require('../../ts/components/DevicePairingDialog');
const { AddServerDialog } = require('../../ts/components/AddServerDialog'); const { AddServerDialog } = require('../../ts/components/AddServerDialog');
const {
SessionSettings,
} = require('../../ts/components/session/SessionSettings');
const { SessionToast } = require('../../ts/components/session/SessionToast'); const { SessionToast } = require('../../ts/components/session/SessionToast');
const { SessionToggle } = require('../../ts/components/session/SessionToggle'); const { SessionToggle } = require('../../ts/components/session/SessionToggle');
const { SessionModal } = require('../../ts/components/session/SessionModal'); const { SessionModal } = require('../../ts/components/session/SessionModal');
@ -272,7 +269,6 @@ exports.setup = (options = {}) => {
InviteFriendsDialog, InviteFriendsDialog,
GroupInvitation, GroupInvitation,
BulkEdit, BulkEdit,
SessionSettings,
SessionToast, SessionToast,
SessionToggle, SessionToggle,
SessionConfirm, SessionConfirm,

@ -919,7 +919,6 @@ label {
&-item { &-item {
font-size: 15px; font-size: 15px;
font-weight: bold;
color: $session-color-white; color: $session-color-white;
background-color: $session-shade-1; background-color: $session-shade-1;

@ -3,31 +3,64 @@ import ReactDOM from 'react-dom';
import { SessionSettingListItem, SessionSettingType } from './session/settings/SessionSettingListItem'; import { SessionSettingListItem, SessionSettingType } from './session/settings/SessionSettingListItem';
// interface State { import { SessionSettingCategory } from './session/LeftPaneSettingSection';
// } import { SessionButtonColor } from './session/SessionButton';
// interface Props {
// }
// export class LeftPane extends React.Component<Props, State> { // Grab initial values from database on startup
// public state = { const localSettings = [
// }; {
id: "typingIndicators",
title: "Typing Indicators",
description: "See and share when messages are being typed. This setting is optional and applies to all conversations.",
type: SessionSettingType.Toggle,
category: SessionSettingCategory.Privacy,
value: false,
},
{
id: "screenLock",
title: "Screen Lock",
description: "Unlock Loki Session using your password. Visit notification settings to customise.",
type: SessionSettingType.Toggle,
category: SessionSettingCategory.Privacy,
value: true,
},
{
id: "screenSecurity",
title: "Screen Security",
description: "Prevent Loki Session previews from appearing in desktop notifications.",
type: SessionSettingType.Toggle,
category: SessionSettingCategory.Privacy,
value: false,
},
{
id: "linkPreviews",
title: "Send Link Previews",
description: "Supported for imgur, Instagram, Pinterest, Reddit and YouTube.",
type: SessionSettingType.Toggle,
category: SessionSettingCategory.Privacy,
value: true,
},
{
id: "screenSecurity",
title: "Screen Security",
description: "Prevent Loki Session previews from appearing in desktop notifications.",
category: SessionSettingCategory.Privacy,
type: SessionSettingType.Toggle,
value: false,
},
{
id: "clearConversationHistory",
title: "Clear Conversation History",
category: SessionSettingCategory.Privacy,
type: SessionSettingType.Button,
value: false,
buttonText: 'Clear',
buttonColor: SessionButtonColor.Danger,
},
];
// public constructor(props: any) {
// super(props);
// }
// public render(): JSX.Element {
// return (
// <div>
// Lorem ipsum dolor sit amet consectetur, adipisicing elit. Debitis, pariatur dicta placeat corporis similique modi quod veritatis voluptatum impedit tempore voluptas nostrum magni aspernatur iure, labore ipsam odit possimus exercitationem?
// </div>
// );
// }
// }
export class MainViewController { export class MainViewController {
public static renderMessageView() { public static renderMessageView() {
@ -51,39 +84,42 @@ export class MainViewController {
public static renderSettingsView() { public static renderSettingsView() {
const element = ( const element = (
<div className="session-settings-list"> <div className="session-settings-list">
<SessionSettingListItem { localSettings.map(setting => {
title = "Typing Indicators" return (
description = "See and share when messages are being typed. This setting is optional and applies to all conversations." <SessionSettingListItem
type = { SessionSettingType.Toggle } title = { setting.title }
value = { true } description = { setting.description }
/> type = { setting.type }
<SessionSettingListItem value = { setting.value }
title = "Screen Lock" onClick = { () => {
description = "Unlock Loki Session using your password. Visit notification settings to customise." SettingsManager.updateSetting(setting);
type = { SessionSettingType.Toggle } }}
value = { false } buttonText = { setting.buttonText || undefined }
/> buttonColor = { setting.buttonColor || undefined }
<SessionSettingListItem />
title = "Enable Screen Security" );
description = "Prevent Loki Session previews from appearing in the app switcher" }) }
type = { SessionSettingType.Toggle }
value = { true }
/>
<SessionSettingListItem
title = "Send Link Previews"
description = "Supported for imgur, Instagram, Pinterest, Reddit and YouTube."
type = { SessionSettingType.Toggle }
value = { true }
/>
<SessionSettingListItem
title = "Clear Conversation History"
type = { SessionSettingType.Button }
value = { false }
onClick = { () => alert("Cleaaarred!") }
/>
</div> </div>
); );
ReactDOM.render(element, document.getElementById('main-view')); ReactDOM.render(element, document.getElementById('main-view'));
} }
}
export class SettingsManager {
public static updateSetting({ id, type, value } ) {
if (type === SessionSettingType.Toggle){
alert(`You clicked a toggle with ID: ${id}`);
// Manage toggle events
return;
}
alert('you clicked something else');
return;
}
} }

@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { SessionToggle } from '../SessionToggle'; import { SessionToggle } from '../SessionToggle';
import { SessionButton, SessionButtonColor } from '../SessionButton'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton';
export enum SessionSettingType { export enum SessionSettingType {
@ -15,6 +16,8 @@ interface Props {
type: SessionSettingType; type: SessionSettingType;
value: boolean | string; value: boolean | string;
onClick?: any; onClick?: any;
buttonText?: string;
buttonColor?: SessionButtonColor;
} }
export class SessionSettingListItem extends React.Component<Props> { export class SessionSettingListItem extends React.Component<Props> {
@ -27,7 +30,7 @@ export class SessionSettingListItem extends React.Component<Props> {
public render(): JSX.Element { public render(): JSX.Element {
const { title, description, type, value, onClick } = this.props const { title, description, type, value, onClick, buttonText, buttonColor } = this.props
return ( return (
<div className="session-settings-item"> <div className="session-settings-item">
@ -45,14 +48,17 @@ export class SessionSettingListItem extends React.Component<Props> {
{ type === SessionSettingType.Toggle && ( { type === SessionSettingType.Toggle && (
<div className="session-sessings-item__selection"> <div className="session-sessings-item__selection">
<SessionToggle active={ Boolean(value) } /> <SessionToggle
active={ Boolean(value) }
onClick = { onClick }
/>
</div> </div>
)} )}
{ type === SessionSettingType.Button && ( { type === SessionSettingType.Button && (
<SessionButton <SessionButton
text = "Clear" text = { buttonText }
buttonColor = {SessionButtonColor.Danger} buttonColor = { buttonColor }
onClick = { onClick } onClick = { onClick }
/> />
)} )}

Loading…
Cancel
Save