diff --git a/tdrive/frontend/src/app/components/color-picker/color-picker.jsx b/tdrive/frontend/src/app/components/color-picker/color-picker.jsx
deleted file mode 100755
index f009e468..00000000
--- a/tdrive/frontend/src/app/components/color-picker/color-picker.jsx
+++ /dev/null
@@ -1,55 +0,0 @@
-/* eslint-disable react/prop-types */
-/* eslint-disable react/jsx-key */
-import React, { Component } from 'react';
-import './color-picker.scss';
-import CheckIcon from '@material-ui/icons/CheckOutlined';
-
-export default class ColorPicker extends Component {
- static colors = [
- '#D50000',
- '#E67C73',
- '#F4511E',
- '#F6BF26',
- '#33B679',
- '#0B8043',
- '#039BE5',
- '#3F51B5',
- '#7986CB',
- '#8E24AA',
- '#801515',
- '#616161',
- ];
-
- /*
- props = {
- value : default color
- onChange : called when a color is selected
- }
- */
- constructor() {
- super();
- this.colors = ColorPicker.colors;
- }
- render() {
- var showed_selected = this.colors.indexOf(this.props.value) >= 0;
- var colors = this.colors;
- if (!showed_selected) {
- colors = this.colors.concat([this.props.value]);
- }
- return (
-
- {colors.map(color => {
- return (
-
this.props.onChange(color)}
- >
- {this.props.value == color && }
-
- );
- })}
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/color-picker/color-picker.scss b/tdrive/frontend/src/app/components/color-picker/color-picker.scss
deleted file mode 100755
index b1ebae5a..00000000
--- a/tdrive/frontend/src/app/components/color-picker/color-picker.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-.colorPicker {
- .color {
- width: 16px;
- height: 16px;
- border-radius: var(--border-radius-large);
- display: inline-block;
- margin: 10px;
- position: relative;
- cursor: pointer;
-
- .m-icon-small {
- color: #fff;
- width: 16px;
- height: 16px;
- position: absolute;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.jsx b/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.jsx
deleted file mode 100755
index ef63da2d..00000000
--- a/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.jsx
+++ /dev/null
@@ -1,139 +0,0 @@
-/* eslint-disable react/prop-types */
-/* eslint-disable react/no-direct-mutation-state */
-import React, { Component } from 'react';
-import CloseIcon from '@material-ui/icons/CloseOutlined';
-import AddIcon from '@material-ui/icons/AddOutlined';
-import GearIcon from '@material-ui/icons/BuildOutlined';
-import Input from 'components/inputs/input.jsx';
-import './connectors-list-manager.scss';
-import Languages from '@features/global/services/languages-service';
-import WorkspacesApps from '@deprecated/workspaces/workspaces_apps.jsx';
-import { getCompanyApplication as getApplication } from '@features/applications/state/company-applications';
-
-export default class ConnectorsListManager extends Component {
- constructor(props) {
- super();
- this.props = props;
- this.state = {
- connectors_ids: props.current.map(item => item.id || ''),
- filtered: [],
- input: '',
- };
- }
- filter(text) {
- this.state.input = text;
- var list = this.props.list;
- var res = list
- .filter(el => {
- return el.identity.name.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) >= 0;
- })
- .map(el => el);
- this.setState({ filtered: res });
- }
- componentDidMount() {
- this.filter('');
- }
-
- renderLine(item, added) {
- var id = item.id || item;
-
- item = getApplication(id);
-
- var text = '';
- var button = '';
-
- text = (
-
- {WorkspacesApps.getAppIconComponent(item)}
- {item.identity.name}
-
- );
-
- if (added) {
- button = (
-
- {
- this.props.onConfig(item);
- }}
- />
- {
- this.state.connectors_ids = this.state.connectors_ids.filter(id =>
- typeof item == 'string' ? item != id : item.id != id,
- );
- this.setState({});
- this.props.onChange(this.state.connectors_ids);
- }}
- />
-
- );
- } else {
- button = (
-
-
{
- this.state.connectors_ids.push(item.id || this.state.input.toLocaleLowerCase());
- this.setState({ input: '' });
- this.props.onChange(this.state.connectors_ids);
- }}
- />
-
- );
- }
-
- return (
-
- {text}
- {button}
-
- );
- }
- render() {
- return (
-
-
-
- {Languages.t('scenes.apps.tasks.connectors_menu', [], 'Connecteurs')}
-
-
-
- {this.state.connectors_ids.length == 0 && (
-
- {Languages.t('scenes.apps.tasks.no_connector', [], 'Aucun connecteurs.')}
-
- )}
- {this.state.connectors_ids.map(id => {
- return this.renderLine(id, true);
- })}
-
-
- {Languages.t('components.connectorslistmanager.add_connectors')}
-
-
-
-
-
- this.filter(evt.target.value)}
- />
-
-
-
- {this.state.filtered.slice(0, 5).map(item => {
- if (this.state.connectors_ids.indexOf(item.id) >= 0) {
- return '';
- }
- return this.renderLine(item, false);
- })}
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.scss b/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.scss
deleted file mode 100755
index 9046fa62..00000000
--- a/tdrive/frontend/src/app/components/connectors-list-manager/connectors-list-manager.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-.connectorsListManager {
- margin: 0px -16px;
- margin-top: -8px;
-
- .menu-app-icon {
- width: 18px;
- height: 18px;
- display: inline-block;
- background-position: center;
- background-size: contain;
- border-radius: var(--border-radius-base);
- vertical-align: middle;
- margin-right: 8px;
- }
-
- .emoji-container {
- margin-right: 5px;
- top: 1px;
- position: relative;
- }
-
- .menu-buttons {
- padding: 0px 8px;
- margin: 0px 8px;
- }
-
- .more {
- width: auto !important;
- margin-right: -5px;
-
- .m-icon-small {
- margin: 3px;
- }
-
- &:hover {
- .m-icon-small {
- &.remove:hover {
- color: var(--red);
- }
- &.config:hover {
- color: var(--primary);
- }
- &.add {
- color: var(--primary);
- }
- }
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages-tester.jsx b/tdrive/frontend/src/app/components/infinite-messages/infinite-messages-tester.jsx
deleted file mode 100755
index 0ccbe4c4..00000000
--- a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages-tester.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import React, { Component } from 'react';
-
-import InfiniteMessages from './infinite-messages.js';
-
-export default class InfiniteMessagesTester extends Component {
- constructor() {
- super();
-
- ///////// Simulate messages
- this.messages = [];
- this.i = 0;
- for (this.i; this.i < 10000; this.i++) {
- this.messages.push({
- content: 'message ' + this.i,
- height: 40 + Math.random() * 100,
- id: this.i,
- });
- }
- setInterval(() => {
- this.messages.push({
- content: 'message ' + this.i,
- height: 40 + Math.random() * 100,
- id: this.i,
- });
- this.i++;
- this.setState({});
- }, 1000);
- ///////////
-
- this.infinieMessages = null;
- }
- getMessages(offset, limit, callback) {
- if (!offset) {
- setTimeout(() => {
- callback(this.messages.slice(this.messages.length - limit, this.messages.length));
- }, 10);
- } else {
- var offsetPos = 0;
- this.messages.every(m => {
- if (m.id >= offset) {
- return false;
- }
- offsetPos++;
- return true;
- });
-
- setTimeout(() => {
- if (limit > 0) {
- callback(this.messages.slice(offsetPos - limit, offsetPos));
- } else {
- callback(this.messages.slice(offsetPos + 1, offsetPos - limit));
- }
- }, 10);
- }
- }
- render() {
- return (
-
-
(this.infinieMessages = node)}
- getMessages={(offset, limit, callback) => this.getMessages(offset, limit, callback)}
- messages={this.messages}
- offsetKey={'id'}
- top={''}
- renderMessage={(message, oldmessage, measure) => (
-
- {message.content}
-
- )}
- />
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.jsx b/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.jsx
deleted file mode 100755
index bc1ad2f4..00000000
--- a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.jsx
+++ /dev/null
@@ -1,472 +0,0 @@
-/* eslint-disable react/no-direct-mutation-state */
-import React, { Component } from 'react';
-
-import Button from 'components/buttons/button.jsx';
-import './infinite-messages.scss';
-
-export default class InfiniteMessages extends Component {
- constructor(props) {
- super(props);
-
- window.test = this;
-
- this.init(props);
-
- this.onScroll = this.onScroll.bind(this);
- this.onUpdate = this.onUpdate.bind(this);
- }
-
- init(props) {
- props = props || this.props;
-
- this.on_load_min = {};
- if (props.messages.length > 60) {
- this.on_load_min = props.messages.slice(props.messages.length - 60, props.messages.length)[0];
- } else {
- this.on_load_min = props.messages[0] || {};
- }
-
- this.state = {
- messages: props.messages.filter(m => this.compare(m, this.on_load_min) >= 0),
- };
- this.shouldAutoScroll = true;
- this.messages_min = this.state.messages[0] || {};
- this.messages_med = this.state.messages[this.state.messages.length - 1] || {};
- this.messages_max = this.state.messages[this.state.messages.length - 1] || {};
- this.bloc_top_height = 0;
-
- this.did_update_messages_data = {};
-
- this.dom_messages = {};
-
- this.max_known = this.messages_max;
- }
-
- componentDidMount() {
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'bottom_auto_add',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
-
- // this.dom_infinite_messages.addEventListener("scroll", this.onScroll);
- window.addEventListener('resize', this.onUpdate);
-
- this.onUpdate();
- }
- componentWillUnmount() {
- window.removeEventListener('resize', this.onUpdate);
- // this.dom_infinite_messages.removeEventListener("scroll", this.onScroll);
- }
- UNSAFE_componentWillUpdate(nextProps, nextState) {
- this.scroll_distance_from_bottom =
- this.dom_infinite_messages.scrollHeight -
- this.dom_infinite_messages.clientHeight -
- this.dom_infinite_messages.scrollTop;
-
- if (nextProps.messages.length) {
- if (nextProps.messages[nextProps.messages.length - 1].id) {
- if (this.messages_med.id == this.max_known.id) {
- this.messages_med = nextProps.messages[nextProps.messages.length - 1];
- this.messages_max = nextProps.messages[nextProps.messages.length - 1];
- }
- this.max_known = nextProps.messages[nextProps.messages.length - 1];
- }
- }
- if (this.max_known.id == this.messages_med.id) {
- nextState.messages = nextProps.messages.filter(m => {
- return !m.id || this.compare(m, this.on_load_min) >= 0;
- });
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'bottom_auto_add',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
- }
- }
- componentDidUpdate() {
- this.onUpdate();
- }
-
- onUpdate() {
- this.did_auto_scroll = new Date();
-
- this.scrollToBottom();
- var dom_fake_separator_top_visible = Math.max(
- 0,
- this.dom_infinite_messages.clientHeight - this.dom_visualized_messages_top.clientHeight,
- );
- if (dom_fake_separator_top_visible == 0) {
- this.dom_fake_separator_top.style.display = 'none';
- } else {
- this.dom_fake_separator_top.style.display = 'block';
- }
-
- if (this.did_update_messages) {
- this.did_update_messages = false;
- this.bloc_top_height = this.dom_visualized_messages_top.clientHeight;
- this.bloc_bottom_height = this.dom_visualized_messages_bottom.clientHeight;
-
- if (this.did_update_messages_data.direction == 'bottom') {
- this.scrollToPosition(
- this.dom_anything_on_top.clientHeight +
- (this.did_update_messages_data.bloc_bottom_height -
- (this.did_update_messages_data.scroll_height -
- this.did_update_messages_data.scroll_top)),
- );
- } else if (this.did_update_messages_data.direction == 'bottom_auto_add') {
- //Nothing
- } else {
- this.scrollToPosition(this.bloc_top_height + this.did_update_messages_data.scroll_top);
- }
-
- this.getVisibleMessages();
- }
- }
-
- onScroll(evt) {
- if (new Date() - this.did_auto_scroll < 100) {
- return;
- }
-
- if (
- this.dom_infinite_messages.scrollHeight != this.last_scrollHeight &&
- this.shouldAutoScroll
- ) {
- this.last_scrollHeight = this.dom_infinite_messages.scrollHeight;
- this.scrollToBottom();
- } else {
- var shouldAutoScroll = this.shouldAutoScroll;
- this.shouldAutoScroll = false;
- if (this.props.onAutoScrollChange && shouldAutoScroll) this.props.onAutoScrollChange(false);
- }
-
- if (this.dom_infinite_messages.scrollTop <= this.dom_infinite_messages.scrollHeight / 8) {
- this.onScrollTop();
- }
- var dist_from_bottom =
- this.dom_infinite_messages.scrollHeight -
- this.dom_infinite_messages.scrollTop -
- this.dom_infinite_messages.clientHeight;
- if (dist_from_bottom <= Math.max(10, this.dom_infinite_messages.scrollHeight / 8)) {
- if (
- dist_from_bottom <= 10 &&
- (this.shouldAutoScroll ||
- this.max_known.id == this.state.messages[this.state.messages.length - 1].id)
- ) {
- // eslint-disable-next-line no-redeclare
- var shouldAutoScroll = this.shouldAutoScroll;
- this.shouldAutoScroll = true;
- if (this.props.onAutoScrollChange && !shouldAutoScroll) this.props.onAutoScrollChange(true);
- } else if (dist_from_bottom <= 10 || this.max_known.id != this.messages_med.id) {
- this.onScrollBottom();
- }
- }
-
- this.getVisibleMessages();
- }
-
- getVisibleMessages() {
- if (
- this.last_get &&
- Math.abs(this.last_get.scroll_top - this.dom_infinite_messages.scrollTop) < 40
- ) {
- return [this.last_get.first];
- }
-
- var first = null;
-
- var frame = window.getBoundingClientRect(this.dom_infinite_messages);
- frame.x = frame.x || frame.left;
- frame.y = frame.y || frame.top;
- frame.scrollTop = this.dom_infinite_messages.scrollTop;
-
- Object.keys(this.dom_messages).every(i => {
- var item = this.dom_messages[i];
- if (item.node && item.scrollTop === undefined) {
- item.scrollTop = window.getBoundingClientRect(item.node).top + frame.scrollTop - frame.y;
- }
- if (item.node) {
- if (!first && item.scrollTop > frame.scrollTop) {
- first = item.message;
- return false;
- }
- }
- return true;
- });
-
- var first_date = new Date((first || {}).creation_date * 1000).setHours(0, 0, 0, 0);
-
- if (first_date != (this.last_get || {}).first_date) {
- if (this.props.onFirstDateChange) this.props.onFirstDateChange(first_date);
- }
-
- this.last_get = {
- scroll_top: frame.scrollTop,
- first: first,
- first_date: first_date,
- };
-
- return [this.last_get.first];
- }
-
- scrollToBottom(force) {
- if (this.shouldAutoScroll || force) {
- //Make sure we display the last bloc !
- if (
- this.messages_med.id != this.messages_min.id &&
- this.messages_med.id != this.messages_max.id
- ) {
- this.init();
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'bottom_auto_add',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
-
- this.onUpdate();
- }
-
- var old_position = this.dom_infinite_messages.scrollTop;
- this.dom_infinite_messages.scrollTop = this.dom_infinite_messages.scrollHeight;
- if (old_position != this.dom_infinite_messages.scrollTop) {
- this.did_auto_scroll = new Date();
- }
-
- var shouldAutoScroll = this.shouldAutoScroll;
- this.shouldAutoScroll = true;
- if (this.props.onAutoScrollChange && !shouldAutoScroll) this.props.onAutoScrollChange(true);
- }
- }
- scrollToPosition(scrollTop) {
- var old_position = this.dom_infinite_messages.scrollTop;
- this.dom_infinite_messages.scrollTop = scrollTop;
- this.did_auto_scroll = new Date();
- }
-
- onScrollTop() {
- if (this.is_getting_top_messages) {
- return;
- }
-
- if (this.no_more_before && this.messages_min.id == this.no_more_before.id) {
- return;
- }
- this.number_of_messages_to_load = 2 * (this.dom_infinite_messages.clientHeight / 20);
- this.is_getting_top_messages = true;
-
- this.props.getMessages(this.messages_min.id, parseInt(this.number_of_messages_to_load), res => {
- if (res.length == 0) {
- this.is_getting_top_messages = false;
- this.no_more_before = this.messages_min;
- return;
- }
-
- var top_list = this.state.messages.filter(
- m => this.compare(m, this.messages_min) >= 0 && this.compare(m, this.messages_med) <= 0,
- );
- top_list = res.concat(top_list);
-
- this.messages_med = res[res.length - 1];
- this.messages_min = res[0];
- this.messages_max = top_list[top_list.length - 1];
-
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'top',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
-
- this.dom_messages = {};
-
- this.setState({ messages: top_list });
-
- this.is_getting_top_messages = false;
- });
- }
-
- onScrollBottom() {
- if (this.is_getting_bottom_messages) {
- return;
- }
-
- this.number_of_messages_to_load = 2 * (this.dom_infinite_messages.clientHeight / 20);
- this.is_getting_bottom_messages = true;
-
- this.props.getMessages(
- this.messages_max.id,
- -parseInt(this.number_of_messages_to_load),
- res => {
- if (res.length == 0) {
- this.is_getting_bottom_messages = false;
- var shouldAutoScroll = this.shouldAutoScroll;
- this.shouldAutoScroll = true;
- if (this.props.onAutoScrollChange && !shouldAutoScroll)
- this.props.onAutoScrollChange(true);
-
- this.max_known = this.state.messages[this.state.messages.length - 1];
- this.messages_min = this.state.messages[0];
- this.messages_max = this.state.messages[this.state.messages.length - 1];
- this.messages_med = this.messages_max;
-
- return;
- }
-
- if (this.compare(res[res.length - 1], this.on_load_min) >= 0) {
- var top_list = this.state.messages.filter(m => this.compare(m, res[res.length - 1]) >= 0);
- top_list = top_list.concat(res);
-
- this.state.messages = this.props.messages.filter(
- m => this.compare(m, this.on_load_min) > 0,
- );
-
- this.max_known = this.state.messages[this.state.messages.length - 1];
- this.messages_min = this.state.messages[0];
- this.messages_max = this.state.messages[this.state.messages.length - 1];
- this.messages_med = this.messages_max;
-
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'bottom_auto_add',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
-
- this.dom_messages = {};
-
- this.setState({ messages: this.state.messages });
- } else {
- // eslint-disable-next-line no-redeclare
- var top_list = this.state.messages.filter(
- m => this.compare(m, this.messages_med) > 0 && this.compare(m, this.messages_max) <= 0,
- );
- top_list = top_list.concat(res);
-
- this.messages_min = top_list[0];
- this.messages_med = this.messages_max;
- this.messages_max = top_list[top_list.length - 1];
-
- this.did_update_messages = true;
- this.did_update_messages_data = {
- direction: 'bottom',
- bloc_top_height: this.dom_visualized_messages_top.clientHeight,
- bloc_bottom_height: this.dom_visualized_messages_bottom.clientHeight,
- scroll_top: this.dom_infinite_messages.scrollTop,
- scroll_height: this.dom_infinite_messages.scrollHeight,
- };
-
- this.dom_messages = {};
-
- this.setState({ messages: top_list });
- }
-
- this.is_getting_bottom_messages = false;
- },
- );
- }
-
- measure(message) {
- if (this.dom_infinite_messages) {
- this.scrollToBottom();
- }
- }
-
- //Returns a-b as int
- compare(a, b) {
- if (this.props.compare) {
- return this.props.compare(a, b);
- }
- return a.id - b.id;
- }
-
- render() {
- var previous_message = null;
-
- return (
- (this.dom_infinite_messages = node)}>
-
(this.dom_anything_on_top = node)}>
- {this.props.top || ''}
- {!this.no_more_before && (
-
-
-
- )}
-
-
(this.dom_fake_separator_top = node)} />
-
(this.dom_visualized_messages_top = node)}
- >
- {this.state.messages.map((message, _i) => {
- if (this.compare(message, this.messages_med) <= 0) {
- var tmp = previous_message;
- previous_message = message;
- var i = _i;
- return (
-
- (this.dom_messages[i] = {
- node: node,
- message: message,
- scrollTop: (this.dom_messages[i] || {}).scrollTop,
- })
- }
- >
- {this.props.renderMessage(message, tmp, () => this.measure(message))}
-
- );
- }
- })}
-
-
(this.dom_visualized_messages_bottom = node)}
- >
- {this.state.messages.map((message, _i) => {
- if (this.compare(message, this.messages_med) > 0) {
- var tmp = previous_message;
- previous_message = message;
- var i = _i;
- return (
-
- (this.dom_messages[i] = {
- node: node,
- message: message,
- scrollTop: (this.dom_messages[i] || {}).scrollTop,
- })
- }
- >
- {this.props.renderMessage(message, tmp, () => this.measure(message))}
-
- );
- }
- })}
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.scss b/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.scss
deleted file mode 100755
index 7990a8cb..00000000
--- a/tdrive/frontend/src/app/components/infinite-messages/infinite-messages.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-.infinite_messages {
- overflow: auto;
- flex: 1;
- display: flex;
- flex-direction: column;
-
- .message {
- box-sizing: border-box;
- }
-
- .fake_separator_top {
- background: transparent;
- flex: 1;
- }
-}
-
-.infinite_messages_tester {
- height: 90vh;
- display: flex;
- width: 100%;
- .message {
- box-sizing: border-box;
- border: 1px solid #f00;
- border-bottom: 5px solid #0f0;
- }
- .visualized_messages.top {
- .message {
- background: #fee;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.jsx b/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.jsx
deleted file mode 100644
index fcc2b1af..00000000
--- a/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import React, { Component } from 'react';
-import './inline-tag-picker.scss';
-
-export default class InlineTagPicker extends Component {
- render() {
- return this.props.available.map(item => {
- return (
-
{
- let array = (this.props.value || []).map(a => a);
- if (this.props.value.includes(item)) {
- array = this.props.value.filter(val => item !== val);
- } else {
- array.push(item);
- }
- this.props.onChange(array);
- }}
- >
- {item}
-
- );
- });
- }
-}
diff --git a/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.scss b/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.scss
deleted file mode 100644
index fd14ea1c..00000000
--- a/tdrive/frontend/src/app/components/inline-tag-picker/inline-tag-picker.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-.inline-tag {
- cursor: pointer;
- background: var(--grey-light);
- border-radius: var(--border-radius-base);
- height: 20px;
- color: var(--grey-dark);
- font-size: 12px;
- padding: 0 5px;
- line-height: 18px;
- box-sizing: border-box;
- width: auto;
- display: inline-block;
- margin-right: 6px;
- font-weight: normal;
- &.selected {
- background: var(--green);
- color: var(--white);
- }
- &:hover {
- transition: 0.3s;
- opacity: 0.9;
- }
-}
diff --git a/tdrive/frontend/src/app/components/input-with-clip-board/input-with-clip-board.jsx b/tdrive/frontend/src/app/components/input-with-clip-board/input-with-clip-board.jsx
deleted file mode 100755
index 51c6f109..00000000
--- a/tdrive/frontend/src/app/components/input-with-clip-board/input-with-clip-board.jsx
+++ /dev/null
@@ -1,59 +0,0 @@
-/* eslint-disable react/prop-types */
-import React, { Component } from 'react';
-
-import Languages from '@features/global/services/languages-service';
-import Tooltip from 'components/tooltip/tooltip.jsx';
-import InputWithButton from 'components/inputs/input-with-button.jsx';
-
-export default class InputWithClipBoard extends Component {
- /*
- props = {
- value : "",
- disabled : true|false
- }
- */
- constructor(props) {
- super(props);
- this.props = props;
-
- this.state = {
- i18n: Languages,
- };
-
- Languages.addListener(this);
- this.inputElement = false;
- }
- componentWillUnmount() {
- Languages.removeListener(this);
- }
- selectAll() {
- this.inputElement.focus();
- this.inputElement.select();
- }
- copy() {
- this.inputElement.disabled = false;
- this.inputElement.focus();
- this.inputElement.select();
- document.execCommand('copy');
- this.inputElement.disabled = this.props.disabled;
- this.tooltip.openWithTimeOut(2);
- }
- render() {
- return (
-
(this.tooltip = obj)}
- overable={false}
- tooltip={Languages.t('components.input.copied', [], 'Copié')}
- >
- (this.inputElement = obj)}
- btnAction={() => this.copy()}
- icon="copy"
- hideBtn={this.props.hideBtn}
- value={this.props.value}
- disabled={this.props.disabled}
- />
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/inputs/deprecated_checkbox.jsx b/tdrive/frontend/src/app/components/inputs/deprecated_checkbox.jsx
deleted file mode 100755
index 351d7602..00000000
--- a/tdrive/frontend/src/app/components/inputs/deprecated_checkbox.jsx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* eslint-disable react/prop-types */
-import React, { Component } from 'react';
-
-import './inputs.scss';
-import CheckIcon from '@material-ui/icons/CheckOutlined';
-
-export default class Checkbox extends Component {
- constructor() {
- super();
- }
- renderSwitch() {
- var className = this.props.className || '';
-
- if (this.props.big) {
- className += ' big ';
- }
- if (this.props.medium) {
- className += ' medium ';
- }
- if (this.props.small) {
- className += ' small ';
- }
-
- if (
- className.indexOf('medium') === className.indexOf('small') &&
- className.indexOf('big') === className.indexOf('small') &&
- className.indexOf('big') < 0
- ) {
- className += ' medium';
- }
-
- return (
-
{
- if (!this.props.label && !this.props.disabled) {
- this.props.onChange(!this.props.value);
- }
- }}
- >
-
-
-
-
- );
- }
- render() {
- var parentClassName = '';
-
- if (this.props.big) {
- parentClassName += ' big ';
- }
- if (this.props.medium) {
- parentClassName += ' medium ';
- }
- if (this.props.small) {
- parentClassName += ' small ';
- }
-
- if (
- parentClassName.indexOf('medium') === parentClassName.indexOf('small') &&
- parentClassName.indexOf('big') === parentClassName.indexOf('small') &&
- parentClassName.indexOf('big') < 0
- ) {
- parentClassName += ' medium';
- }
-
- if (this.props.label) {
- return (
-
{
- if (!this.props.disabled) {
- this.props.onChange(!this.props.value);
- }
- }}
- >
- {this.renderSwitch()}
-
{this.props.label}
-
- );
- } else {
- return this.renderSwitch();
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/inputs/input-with-color.jsx b/tdrive/frontend/src/app/components/inputs/input-with-color.jsx
deleted file mode 100755
index 9c4893ca..00000000
--- a/tdrive/frontend/src/app/components/inputs/input-with-color.jsx
+++ /dev/null
@@ -1,129 +0,0 @@
-/* eslint-disable react/prop-types */
-import React, { Component } from 'react';
-
-import MenusManager from '@components/menus/menus-manager.jsx';
-import ColorPicker from 'components/color-picker/color-picker.jsx';
-import Input from 'components/inputs/input.jsx';
-import './inputs.scss';
-
-export default class InputWithColor extends Component {
- constructor() {
- super();
- }
- outsideMenuListener() {
- this.closeColorPicker();
- }
- componentWillUnmount() {
- document.removeEventListener('click', this.outsideClickListener);
- }
- componentDidMount() {
- if (this.props.focusOnDidMount && this.input) {
- this.input.focus();
- }
- this.outsideClickListener = event => {
- if (
- this.colorPickerIsOpen &&
- this.colorpicker_dom &&
- !this.colorpicker_dom.contains(event.target) &&
- document.contains(event.target)
- ) {
- this.outsideMenuListener();
- }
- };
- this.outsideClickListener = this.outsideClickListener.bind(this);
- document.addEventListener('click', this.outsideClickListener);
- }
- closeColorPicker() {
- if (!this.colorPickerIsOpen) {
- return;
- }
-
- if (this.props.menu_level !== undefined) {
- MenusManager.closeSubMenu(this.props.menu_level);
- } else {
- MenusManager.closeMenu();
- }
-
- this.colorPickerIsOpen = false;
- }
- openColorPicker() {
- if (this.colorPickerIsOpen) {
- return;
- }
-
- var menu = [
- {
- type: 'react-element',
- reactElement: () => {
- return (
-
(this.colorpicker_dom = node)}
- value={this.props.value[0]}
- onChange={color => this.selectColor(color)}
- />
- );
- },
- },
- ];
- var elementRect = window.getBoundingClientRect(this.color_dom);
- elementRect.x = elementRect.x || elementRect.left;
- elementRect.y = elementRect.y || elementRect.top;
- if (this.props.menu_level !== undefined) {
- MenusManager.openSubMenu(menu, elementRect, this.props.menu_level, 'bottom');
- } else {
- MenusManager.openMenu(menu, elementRect, 'bottom');
- }
-
- setTimeout(() => {
- this.colorPickerIsOpen = true;
- }, 200);
- }
- selectColor(color) {
- this.closeColorPicker();
- var value = [color, this.props.value[1]];
- this.onChange(value);
- }
- onChange(value) {
- if (this.props.onChange) {
- this.props.onChange(value);
- }
- }
- render() {
- if (!this.props.value[0]) {
- this.onChange([
- ColorPicker.colors[parseInt(Math.random() * ColorPicker.colors.length)],
- this.props.value[1],
- ]);
- }
- return (
-
-
(this.color_dom = node)}
- onClick={() => {
- this.openColorPicker();
- }}
- >
-
-
-
- (this.input = obj)}
- type="text"
- placeholder={this.props.placeholder}
- value={this.props.value[1]}
- onKeyDown={e => {
- if (e.keyCode == 13 && this.props.onEnter) {
- this.props.onEnter();
- }
- }}
- onChange={evt => {
- if (this.onChange) this.onChange([this.props.value[0], evt.target.value]);
- }}
- />
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/inputs/rounded.jsx b/tdrive/frontend/src/app/components/inputs/rounded.jsx
deleted file mode 100755
index 4e0eadae..00000000
--- a/tdrive/frontend/src/app/components/inputs/rounded.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-disable react/prop-types */
-import React, { Component } from 'react';
-
-import PlusIcon from '@material-ui/icons/AddOutlined';
-
-export default class Rounded extends Component {
- constructor() {
- super();
- }
- render() {
- return (
-
- {this.props.text ? this.props.text + ' ' : ''}
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.jsx b/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.jsx
deleted file mode 100755
index 0ab9237d..00000000
--- a/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.jsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import React, { Component } from 'react';
-
-import './interactive-login-background.scss';
-
-export default class InteractiveLoginBackground extends React.Component {
- constructor(props) {
- super();
-
- this.lFollowX = 0;
- this.lFollowY = 0;
- this.x = 0;
- this.y = 0;
- this.friction = 1 / 30;
-
- this.objects = [];
- }
- addObject() {
- var div = document.createElement('div');
-
- var size = Math.pow(0.1 + Math.random(), 2) * 10;
- var left = Math.random() * 100 + 'vw';
-
- div.style.width = size + 'px';
- div.style.height = size + 'px';
-
- var duration = 30 + Math.random() * 15;
- var time_class = 'a';
- if (duration > 40) {
- time_class = 'b';
- } else if (duration >= 35) {
- time_class = 'c';
- }
-
- div.style.animationDelay = '-' + Math.random() * 45 + 's';
- div.style.animationDuration = duration + 's';
-
- div.style.left = left;
-
- div.classList.add('animated_shape');
- if (Math.random() > 0.5) {
- div.classList.add('circle');
- }
- div.classList.add('speed-' + time_class);
-
- this.background.appendChild(div);
-
- this.objects.push(div);
- }
- mousemove(evt) {
- this.lFollowX = evt.clientX / window.innerWidth;
- this.lFollowY = evt.clientY / window.innerHeight;
- }
- moveBackground() {
- if (!this.mounted) {
- return;
- }
-
- this.x += (this.lFollowX - this.x) * this.friction;
- this.y += (this.lFollowY - this.y) * this.friction;
-
- this.objects.forEach(div => {
- var fa, fb;
- if (div.classList.contains('speed-a')) {
- fa = 50;
- fb = 15;
- }
- if (div.classList.contains('speed-b')) {
- fa = 40;
- fb = 10;
- }
- if (div.classList.contains('speed-c')) {
- fa = 30;
- fb = 5;
- }
- div.style.marginLeft = (this.x - 0.5) * fa;
- div.style.marginTop = (this.y - 0.5) * fb;
- });
-
- window.requestAnimationFrame(this.moveBackground);
- }
- componentDidMount() {
- for (var i = 0; i < 50; i++) {
- this.addObject();
- }
-
- this.mousemove = this.mousemove.bind(this);
- this.moveBackground = this.moveBackground.bind(this);
-
- this.mounted = true;
- this.moveBackground();
- document.addEventListener('mousemove', this.mousemove);
- }
- componentWillUnmount() {
- this.mounted = false;
- document.removeEventListener('mousemove', this.mousemove);
- }
- render() {
- return (this.background = node)} className="animated_background" />;
- }
-}
diff --git a/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.scss b/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.scss
deleted file mode 100755
index e152cc5f..00000000
--- a/tdrive/frontend/src/app/components/interactive-login-background/interactive-login-background.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-.animated_background {
- width: 100%;
- height: 60vh;
- position: relative;
- background: var(--primary);
-
- .animated_shape {
- background: #fff;
- top: calc(100% + 50px);
- animation-iteration-count: infinite;
- animation-timing-function: linear;
- animation-name: animated_background_shape_animation;
- position: absolute;
- border-radius: var(--border-radius-base);
- }
- .animated_shape.circle {
- border-radius: 100%;
- animation-name: animated_background_shape_animation_circle;
- }
-}
-
-@keyframes animated_background_shape_animation {
- 0% {
- transform: translateY(0);
- opacity: 0.7;
- }
- 100% {
- transform: translateY(-100vh) rotate(600deg);
- opacity: 0;
- }
-}
-
-@keyframes animated_background_shape_animation_circle {
- 0% {
- transform: translateY(0);
- opacity: 0.7;
- }
- 100% {
- transform: translateY(-100vh);
- opacity: 0;
- }
-}
diff --git a/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.scss b/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.scss
deleted file mode 100644
index 01efc43f..00000000
--- a/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-.locked-history-banner {
- .title-container {
- display: flex;
- align-items: center;
- height: 24px;
- margin: 16px 0 8px 0px;
-
- .title {
- line-height: 16px;
- margin: 0;
- margin-left: 8px;
- font-size: 16px;
- }
- }
-
- .description {
- height: 30px;
- text-align: center;
- font-size: 12px;
- }
-}
diff --git a/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.tsx b/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.tsx
deleted file mode 100644
index bfcc8cbc..00000000
--- a/tdrive/frontend/src/app/components/locked-features-components/locked-history-banner/locked-history-banner.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import React from 'react';
-import { Typography, Button } from 'antd';
-import Banner from '@components/banner/banner';
-import Emojione from '@components/emojione/emojione';
-import Languages from '@features/global/services/languages-service';
-import './locked-history-banner.scss';
-import consoleService from '@features/console/services/console-service';
-import useRouterCompany from '@features/router/hooks/use-router-company';
-
-const { Title, Text } = Typography;
-const LockedHistoryBanner = (): JSX.Element => {
- const companyId = useRouterCompany();
-
- const onClickBtn = () =>
- window.open(consoleService.getCompanySubscriptionUrl(companyId), 'blank');
-
- return (
-
-
-
-
- {Languages.t('components.locked_features.locked_history_banner.title')}
-
-
-
- {Languages.t('components.locked_features.locked_history_banner.description')}
-
-
-
- );
-};
-
-export default LockedHistoryBanner;
diff --git a/tdrive/frontend/src/app/components/locked-features-components/locked-workspace-popup/locked-workspace-popup.tsx b/tdrive/frontend/src/app/components/locked-features-components/locked-workspace-popup/locked-workspace-popup.tsx
deleted file mode 100644
index 50cb1e90..00000000
--- a/tdrive/frontend/src/app/components/locked-features-components/locked-workspace-popup/locked-workspace-popup.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import React from 'react';
-import ObjectModal from '@components/object-modal/object-modal';
-import { Button, Row, Typography } from 'antd';
-import ModalManager from '@components/modal/modal-manager';
-import Languages from '@features/global/services/languages-service';
-import consoleService from '@features/console/services/console-service';
-import useRouterCompany from '@features/router/hooks/use-router-company';
-
-const { Title, Text } = Typography;
-export default () => {
- const companyId = useRouterCompany();
- return (
-
-
-
- {Languages.t('components.locked_features.locked_guests_popup.or')}
-
-
-
- }
- hideFooterDivider
- footerAlign="center"
- footerStyle={{ marginBottom: 16 }}
- >
-
-
-
-
-
-
-
-
- );
-};
diff --git a/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.jsx b/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.jsx
deleted file mode 100755
index 5e517a47..00000000
--- a/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.jsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, { Component } from 'react';
-import Icon from '@components/icon/icon.jsx';
-import PerfectScrollbar from 'react-perfect-scrollbar';
-import Tabs from 'components/tabs/tabs.jsx';
-import './deprecated-object-modal.scss';
-import { Divider } from 'antd';
-
-export class ObjectModalTitle extends Component {
- render() {
- return (
-
- {this.props.children}
-
- );
- }
-}
-//ObjectModalSeparator
-export class ObjectModalSeparator extends Component {
- render() {
- return ;
- }
-}
-//ObjectModalSectionTitle
-export class ObjectModalSectionTitle extends Component {
- render() {
- return (
-
-
{this.props.title || this.props.children}
-
{this.props.action}
-
- );
- }
-}
-
-// ObjectModalFormTitle
-export class ObjectModalFormTitle extends Component {
- render() {
- return (
-
- {this.props.icon && }
- {this.props.name}
-
- );
- }
-}
-
-export class ObjectModal extends Component {
- constructor(props) {
- super();
- this.state = {};
- }
- render() {
- return (
-
-
- {this.props.onEdit && (
-
-
-
- )}
- {this.props.onClose && (
-
-
-
- )}
-
-
-
{this.props.title}
-
- {this.props.tabs && (
-
{
- return {
- title: item.title || '',
- render: (
-
- ),
- };
- })}
- />
- )}
-
- {!this.props.tabs && (
-
- {!!this.props.noScrollBar && (
-
{this.props.children}
- )}
- {!this.props.noScrollBar && (
-
- {this.props.children}
-
- )}
-
- )}
-
- {this.props.footer && }
- {this.props.footer && (
-
-
-
{this.props.footer}
-
- )}
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.scss b/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.scss
deleted file mode 100755
index c376b19c..00000000
--- a/tdrive/frontend/src/app/components/object-modal/deprecated-object-modal.scss
+++ /dev/null
@@ -1,64 +0,0 @@
-.object_modal {
- position: relative;
- display: flex;
- flex-direction: column;
- margin-bottom: 24px;
-
- & > .title {
- padding-right: 56px;
- margin: 16px 0 11px 16px;
- }
-
- & > .top_right_buttons {
- position: absolute;
- top: 16px;
- right: 16px;
- left: 16px;
- text-align: right;
-
- .square_button {
- vertical-align: top;
- display: inline-block;
- width: 24px;
- height: 24px;
- line-height: 24px;
- border-radius: var(--border-radius-base);
- margin-left: 8px;
- background: var(--grey-background);
- cursor: pointer;
-
- &:hover {
- background: var(--primary-background);
- }
- }
- }
-
- & > .body {
- margin: 0 0;
- .scrollbar-container,
- .child-with-margin {
- padding: 16px;
- max-height: calc(80vh - 200px);
- }
- }
-
- .modal_title {
- font-size: 24px;
- color: var(--black);
- }
-}
-
-.section_title {
- color: var(--grey-dark);
- font-size: 14px;
- font-weight: 500;
- margin-bottom: 8px;
- margin-top: 24px;
-
- i {
- margin-right: 4px;
- &:before {
- margin-left: 0px;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.jsx b/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.jsx
deleted file mode 100755
index 59d222e9..00000000
--- a/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.jsx
+++ /dev/null
@@ -1,199 +0,0 @@
-/* eslint-disable react/no-direct-mutation-state */
-import React, { Component } from 'react';
-import Button from 'components/buttons/button.jsx';
-import Input from 'components/inputs/input.jsx';
-import Icon from '@components/icon/icon.jsx';
-import Select from 'components/select/select.jsx';
-import './reminder-selector.scss';
-import Languages from '@features/global/services/languages-service';
-
-export default class ReminderSelector extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- reminders: [],
- };
-
- this.old_value = JSON.stringify(props.reminders || []);
- }
-
- componentDidMount() {
- this.updateFromProps(this.props);
- }
-
- shouldComponentUpdate(nextProps, nextState) {
- if (this.old_value != JSON.stringify(nextProps.reminders)) {
- this.old_value = JSON.stringify(nextProps.reminders);
- this.updateFromProps(nextProps);
- }
- return true;
- }
-
- remove(i) {
- delete this.state.reminders[i];
- this.update();
- }
-
- add() {
- this.state.reminders.push({
- mode: 'push',
- delay_unit: 'minutes',
- delay_value: '30',
- });
- this.update();
- }
-
- update() {
- var ret = [];
- this.state.reminders.forEach(item => {
- if (item.delay_unit == 'minutes' && item.delay_value > 59) {
- item.delay_value = 30;
- }
- if (item.delay_unit == 'hours' && item.delay_value > 23) {
- item.delay_value = 1;
- }
- if (item.delay_unit == 'days' && item.delay_value > 13) {
- item.delay_value = 1;
- }
- if (item.delay_unit == 'weeks' && item.delay_value < 2) {
- item.delay_value = 2;
- }
-
- ret.push({
- mode: item.mode,
- delay:
- parseInt(item.delay_value) *
- 60 *
- (item.delay_unit == 'hours' ? 60 : 1) *
- (item.delay_unit == 'days' ? 60 * 24 : 1) *
- (item.delay_unit == 'weeks' ? 60 * 24 * 7 : 1),
- });
- });
-
- if (this.props.onChange) {
- this.props.onChange(ret);
- }
-
- this.setState({});
- }
-
- updateFromProps(nextProps) {
- var props = nextProps || this.props;
-
- var reminders = [];
-
- (props.reminders || []).forEach(item => {
- var delay_value = parseInt(item.delay / 60);
- var delay_unit = 'minutes';
- if (item.delay > 59 * 60) {
- delay_value = parseInt(item.delay / (60 * 60));
- delay_unit = 'hours';
- }
- if (item.delay > 23 * 60 * 60) {
- delay_value = parseInt(item.delay / (60 * 60 * 24));
- delay_unit = 'days';
- }
- if (item.delay > 13 * 24 * 60 * 60) {
- delay_value = parseInt(item.delay / (60 * 60 * 24 * 7));
- delay_unit = 'weeks';
- }
- reminders.push({
- mode: item.mode,
- delay_value: delay_value,
- delay_unit: delay_unit,
- });
- });
-
- this.setState({ reminders: reminders });
- }
-
- render() {
- return (
-
- {this.state.reminders.map((reminder, i) => {
- return (
-
-
- );
- })}
-
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.scss b/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.scss
deleted file mode 100755
index 85cd9dac..00000000
--- a/tdrive/frontend/src/app/components/reminder-selector/reminder-selector.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.reminderSelector {
- .remove_icon {
- cursor: pointer;
- &:hover {
- color: var(--red);
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/tabs/tabs.jsx b/tdrive/frontend/src/app/components/tabs/tabs.jsx
deleted file mode 100755
index 3cae0e4e..00000000
--- a/tdrive/frontend/src/app/components/tabs/tabs.jsx
+++ /dev/null
@@ -1,69 +0,0 @@
-/* eslint-disable react/jsx-key */
-import React, { Component } from 'react';
-
-import Languages from '@features/global/services/languages-service';
-import PerfectScrollbar from 'react-perfect-scrollbar';
-import './tabs.scss';
-
-export default class Tabs extends Component {
- constructor(props) {
- super(props);
- this.state = {
- i18n: Languages,
- tab: props.selected,
- };
- Languages.addListener(this);
- }
- componentWillUnmount() {
- Languages.removeListener(this);
- }
- select(i) {
- this.setState({ tab: i });
- this.props.onChange && this.props.onChange(i);
- }
- UNSAFE_componentWillUpdate(nextProps, nextState) {
- if (nextProps.selected && JSON.stringify(nextProps.selected) != this.oldSelected) {
- nextState.tab = nextProps.selected;
- this.oldSelected = JSON.stringify(nextProps.selected);
- }
- }
- render() {
- var selected = this.state.tab || Object.keys(this.props.tabs || {})[0];
- if (!this.props.tabs[selected]) {
- selected = Object.keys(this.props.tabs || {})[0];
- }
-
- return (
-
-
- {Object.keys(this.props.tabs || {}).map(i => {
- var item = this.props.tabs[i];
- return (
- this.select(i)}
- >
- {typeof item.title == 'function' ? item.title() : item.title}
-
- );
- })}
-
-
- {typeof this.props.tabs[selected].render == 'function'
- ? this.props.tabs[selected].render()
- : this.props.tabs[selected].render}
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/tabs/tabs.scss b/tdrive/frontend/src/app/components/tabs/tabs.scss
deleted file mode 100755
index e38981db..00000000
--- a/tdrive/frontend/src/app/components/tabs/tabs.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-.component_tabs {
- position: relative;
- overflow: hidden;
-
- &::before {
- content: '';
- position: relative;
- right: 0px;
- left: auto;
- top: 0px;
- height: 100%;
- width: 50px;
- z-index: 1;
- pointer-events: none;
- background: linear-gradient(to right, #ffffff00 0%, #ffffffff 100%);
- }
-
- & > .component_tabs_tabs {
- border-bottom: 1px solid var(--grey-background);
- padding: 0 16px;
- white-space: nowrap;
- max-width: 100%;
- box-sizing: border-box;
-
- .component_tabs_tab {
- height: 40px;
- box-sizing: border-box;
- border-radius: 0;
- display: inline-block;
- padding: 8px 16px;
- font-weight: 500;
- color: var(--grey-dark);
- font-size: 14px;
- cursor: pointer;
-
- &:hover {
- background: transparent;
- color: var(--black);
- }
-
- &.selected {
- background: transparent;
- border-bottom: 4px solid var(--primary);
- color: var(--black);
- }
- }
- }
- & > .body {
- padding: 16px;
- }
-
- &.full-body {
- & > .body,
- & > .component_tabs_tabs {
- padding: 0px;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/tag-picker/tag-picker.jsx b/tdrive/frontend/src/app/components/tag-picker/tag-picker.jsx
deleted file mode 100755
index a1986961..00000000
--- a/tdrive/frontend/src/app/components/tag-picker/tag-picker.jsx
+++ /dev/null
@@ -1,196 +0,0 @@
-/* eslint-disable react/jsx-key */
-/* eslint-disable react/no-direct-mutation-state */
-import React, { Component } from 'react';
-import Icon from '@components/icon/icon.jsx';
-import Button from 'components/buttons/button.jsx';
-import './tag-picker.scss';
-import MenusManager from '@components/menus/menus-manager.jsx';
-import TagSelector from './tag-selector.jsx';
-import Workspaces from '@deprecated/workspaces/workspaces.jsx';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-import Languages from '@features/global/services/languages-service';
-
-export default class TagPicker extends React.Component {
- constructor(props) {
- super();
- this.props = props;
- this.state = {
- currentSelected: [],
- inputValue: '',
- currentList: [],
- selected: [],
- value: this.props.value || [],
- list: props.data || [
- { id: 1, name: Languages.t('scenes.apps.tasks.task_status.todo', [], 'To do') },
- { id: 2, name: Languages.t('scenes.apps.tasks.task_status.current', [], 'Doing') },
- { id: 3, name: Languages.t('scenes.apps.tasks.task_status.done', [], 'Done') },
- ],
- };
- }
- UNSAFE_componentWillUpdate(nextProps, nextState) {
- if (JSON.stringify(nextProps.value) != JSON.stringify(this.props.value)) {
- this.state.value = nextProps.value;
- }
- }
- UNSAFE_componentWillMount() {
- if (!this.props.data) {
- Collections.get('tags').addListener(this);
- Collections.get('tags').addSource(
- {
- http_base_url: 'globalsearch/tags',
- http_options: {
- workspace_id: Workspaces.currentWorkspaceId,
- },
- websockets: [{ uri: 'tags/' + Workspaces.currentWorkspaceId, options: { type: 'tags' } }],
- },
- Workspaces.currentWorkspaceId,
- );
- }
- }
- componentWillUnmount() {
- if (!this.props.data) {
- Collections.get('tags').removeListener(this);
- }
- }
- addTags(evt) {
- var menu = [
- {
- type: 'react-element',
- reactElement: level => {
- return (
- {
- if (typeof a == 'string') {
- return { name: a, id: a, color: '#888' };
- } else {
- return a;
- }
- })
- : false
- }
- canCreate={this.props.canCreate}
- disabledTags={
- this.state.value.map(item => {
- return typeof item == 'string' ? item : item.id;
- }) || []
- }
- onChange={value => {
- value.forEach(tag => {
- if (
- this.state.value
- .map(item => {
- return typeof item == 'string' ? item : item.id;
- })
- .indexOf(tag.id || tag.name || tag) < 0
- ) {
- this.state.value.push(tag.id || tag.name || tag);
- }
- });
- if (!this.props.saveButton) this.props.onChange(this.state.value);
- this.setState({});
- if (this.props.menu_level !== undefined) {
- MenusManager.closeSubMenu(this.props.menu_level);
- } else {
- MenusManager.closeMenu();
- }
- }}
- />
- );
- },
- },
- ];
- if (this.props.menu_level !== undefined) {
- MenusManager.openSubMenu(
- menu,
- { x: evt.clientX, y: evt.clientY },
- this.props.menu_level,
- 'right',
- );
- } else {
- MenusManager.openMenu(menu, { x: evt.clientX, y: evt.clientY }, 'right');
- }
- }
- render() {
- var value = this.state.value || [];
-
- var tag_list = value.map(tag_id => {
- var tag = false;
- if (this.props.data) {
- if (typeof tag_id == 'string') {
- tag = { name: tag_id, id: tag_id, color: '#888' };
- } else {
- tag = tag_id;
- tag.id = tag.id || tag.name;
- tag.color = tag.color || '#888';
- }
- } else {
- tag = Collections.get('tags').find(tag_id);
- }
- if (!tag) {
- return '';
- }
- var name = tag.name;
- return (
-
- {name}{' '}
- {!this.props.readOnly && (
- {
- this.state.value.splice(this.state.value.indexOf(tag.id), 1);
- if (!this.props.saveButton) this.props.onChange(this.state.value);
- this.setState({});
- }}
- />
- )}
-
- );
- });
-
- if (this.props.inline) {
- return tag_list;
- }
-
- return (
-
- {!this.props.readOnly && value.length == 0 && (
-
{Languages.t('components.tagpicker.notag', [], 'No tag')}
- )}
-
- {tag_list}
-
- {!this.props.readOnly && (
-
- )}
-
- {this.props.saveButton && (
-
-
- )}
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/tag-picker/tag-picker.scss b/tdrive/frontend/src/app/components/tag-picker/tag-picker.scss
deleted file mode 100755
index b8856f8f..00000000
--- a/tdrive/frontend/src/app/components/tag-picker/tag-picker.scss
+++ /dev/null
@@ -1,104 +0,0 @@
-.tagPicker .tag,
-.inline-tag {
- height: 22px;
- border-radius: var(--border-radius-base);
- background: var(--grey-dark);
- color: #fff;
- line-height: 22px;
- vertical-align: top;
- margin-bottom: 8px;
- margin-right: 8px;
- font-size: 12px;
- font-weight: bold;
- padding: 0 4px;
- padding-left: 6px;
-
- &.notag {
- background: var(--grey-background);
- color: var(--grey-dark);
- }
-
- .remove {
- opacity: 0.5;
- cursor: pointer;
- &:hover {
- opacity: 1;
- }
- }
- .remove:before {
- margin: 0px;
- }
-
- &.disabled {
- opacity: 0.5;
- }
-}
-
-.tagPicker {
- .tag_selectable {
- display: flex;
- .tag_part {
- flex: 1;
- }
- .edit {
- }
- }
-
- .secondary-text {
- height: 22px;
- line-height: 22px;
- }
-
- &.disabled {
- opacity: 0.5;
- pointer-events: none;
- }
-
- .pickerInput {
- padding-left: 5px;
-
- &.readOnly {
- padding-left: 0px;
- }
- }
- .itemSelected {
- display: inline-block;
- .close {
- font-size: 8px;
- margin-left: 5px;
- opacity: 0.4;
- display: inline-block;
- margin-right: -1px;
- bottom: 0px;
- position: relative;
- }
- .close:hover {
- opacity: 0.8;
- cursor: pointer;
- }
- }
- .itemContoured {
- padding: 1px 6px;
- display: inline-block;
- background-color: var(--primary);
- box-sizing: border-box;
- color: #fff;
- border-radius: var(--border-radius-base);
- margin: 5px 0px;
- margin-right: 5px;
- height: 18px;
- line-height: 16px;
- font-size: 12px;
- }
- .menu {
- .itemContoured {
- margin: 3px 0;
- }
- }
-}
-
-.inline-tag {
- display: inline-block;
- margin-bottom: 0px;
- vertical-align: middle;
-}
diff --git a/tdrive/frontend/src/app/components/tag-picker/tag-selector.jsx b/tdrive/frontend/src/app/components/tag-picker/tag-selector.jsx
deleted file mode 100755
index e91086fd..00000000
--- a/tdrive/frontend/src/app/components/tag-picker/tag-selector.jsx
+++ /dev/null
@@ -1,220 +0,0 @@
-/* eslint-disable react/no-direct-mutation-state */
-import React, { Component } from 'react';
-import Picker from 'components/picker/picker.jsx';
-import Button from 'components/buttons/button.jsx';
-import Workspaces from '@deprecated/workspaces/workspaces.jsx';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-import Icon from '@components/icon/icon.jsx';
-import ColorPicker from 'components/color-picker/color-picker.jsx';
-import Strings from '@features/global/utils/strings';
-import InputWithColor from 'components/inputs/input-with-color.jsx';
-import AlertManager from '@features/global/services/alert-manager-service';
-import Languages from '@features/global/services/languages-service';
-import MenusManager from '@components/menus/menus-manager.jsx';
-
-class TagEditor extends React.Component {
- constructor(props) {
- super();
- this.props = props;
- this.state = {
- edited_tag_name: '',
- edited_tag_color: '',
- };
- }
- UNSAFE_componentWillMount() {
- var tag = this.props.tag;
- this.state.edited_tag_color = tag.color;
- this.state.edited_tag_name = tag.name;
- }
- saveTag(tag) {
- tag.color = this.state.edited_tag_color || tag.color;
- tag.name = this.state.edited_tag_name || tag.name;
- Collections.get('tags').save(tag, Workspaces.currentWorkspaceId);
- MenusManager.closeSubMenu(this.props.level - 1);
- }
- render() {
- var tag = this.props.tag;
- return (
-
-
{
- this.saveTag(tag);
- }}
- onChange={value => {
- this.setState({ edited_tag_color: value[0], edited_tag_name: value[1] });
- }}
- />
-
-
-
- );
- }
-}
-
-export default class TagSelector extends React.Component {
- constructor(props) {
- super();
- this.props = props;
- this.state = {
- edited_tag_name: '',
- edited_tag_color: '',
- };
-
- this.colors_random_list = ColorPicker.colors.map(a => a).sort(() => Math.random() - 0.5);
- this.next_new_color = 0;
- }
- onUpdate(item) {}
- onCreate(text, cb) {
- var color = this.colors_random_list[this.next_new_color];
- this.next_new_color = (this.next_new_color + 1) % this.colors_random_list.length;
-
- var new_tag = Collections.get('tags').edit();
- new_tag.name = text;
- new_tag.color = color;
- new_tag.workspace_id = Workspaces.currentWorkspaceId;
- Collections.get('tags').save(new_tag, Workspaces.currentWorkspaceId, tag => {
- cb(new_tag);
- });
-
- return new_tag;
- }
- onRemove(item, ev) {}
- renderItemChoosen(item) {
- return '';
- }
- editTag(evt, id) {
- var tag = Collections.get('tags').find(id);
- if (!tag) {
- return;
- }
- var menu = [
- { type: 'title', text: Languages.t('general.edit') },
- {
- type: 'react-element',
- reactElement: level => {
- return ;
- },
- },
- { type: 'separator' },
- {
- text: Languages.t('general.remove'),
- className: 'error',
- icon: 'trash',
- onClick: ev => {
- var tag = Collections.get('tags').find(id);
- if (tag) {
- AlertManager.confirm(() => {
- MenusManager.closeSubMenu(this.props.level - 1);
- Collections.get('tags').remove(tag, Workspaces.currentWorkspaceId);
- });
- }
- return false;
- },
- },
- ];
- MenusManager.openSubMenu(menu, { x: evt.clientX, y: evt.clientY }, this.props.level, 'right');
- }
- renderItem(item) {
- var add_option = false;
- if (typeof item == 'string') {
- add_option = true;
- item = { name: item, color: this.colors_random_list[this.next_new_color] };
- }
- var tag = (
- = 0 ? 'disabled' : '')
- }
- style={{ backgroundColor: item.color, margin: '5px 0' }}
- >
- {item.name}
-
- );
-
- if (add_option) {
- return tag;
- }
-
- return (
-
-
{tag}
- {!add_option && !this.props.data && (
-
{
- ev.stopPropagation();
- ev.preventDefault();
- this.editTag(ev, item.id);
- }}
- >
-
-
- )}
-
- );
- }
- search(text, cb) {
- var res = Collections.get('tags').findBy({ workspace_id: Workspaces.currentWorkspaceId });
- if (this.props.data) {
- res = this.props.data;
- }
-
- res = res
- .filter(function (item) {
- if (
- Strings.removeAccents(item.name.toLowerCase().replace(/ +/, '')).indexOf(
- Strings.removeAccents(text.toLowerCase().replace(/ +/, '')),
- ) !== -1
- ) {
- return true;
- }
- return false;
- })
- .sort((a, b) => {
- return this.props.disabledTags.indexOf(a.id) >= 0 ? -1 : 1;
- });
- cb(res);
- }
- render() {
- return (
- {
- this.picker = picker;
- }}
- title={false}
- search={(text, cb) => {
- this.search(text, cb);
- }}
- renderItem={item => {
- return this.renderItem(item);
- }}
- renderItemChoosen={item => {
- return this.renderItemChoosen(item);
- }}
- renderItemSimply={item => {
- return item.name;
- }}
- canCreate={this.props.canCreate !== false}
- onCreate={(text, cb) => this.onCreate(text, cb)}
- onSelect={item => this.onSelect(item)}
- onChange={this.props.onChange}
- value={this.props.value}
- readOnly={this.props.readOnly}
- inline={this.props.inline}
- />
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/task-picker/task-picker.jsx b/tdrive/frontend/src/app/components/task-picker/task-picker.jsx
deleted file mode 100755
index dc134cd2..00000000
--- a/tdrive/frontend/src/app/components/task-picker/task-picker.jsx
+++ /dev/null
@@ -1,255 +0,0 @@
-/* eslint-disable react/jsx-key */
-import React, { Component } from 'react';
-import Workspaces from '@deprecated/workspaces/workspaces.jsx';
-import Button from 'components/buttons/button.jsx';
-import Languages from '@features/global/services/languages-service';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-import Emojione from 'components/emojione/emojione';
-import Loader from 'components/loader/loader.jsx';
-import TasksService from '@deprecated/Apps/Tasks/Tasks.js';
-import LeftIcon from '@material-ui/icons/KeyboardArrowLeftOutlined';
-
-import './task-picker.scss';
-
-export default class TaskPicker extends Component {
- /*
- props : {
- mode : "select_board" / "select_task"
- }
- */
-
- constructor(props) {
- super(props);
- this.tasks_collection_key = 'tasks_picker_' + Workspaces.currentWorkspaceId;
- this.collection_key = [];
-
- this.state = {
- taskRepository: Collections.get('task'),
- currentBoard: null,
- currentList: null,
- taskSelected: null,
- boardRepository: Collections.get('boards'),
- };
- Languages.addListener(this);
- Collections.get('boards').addListener(this);
- Collections.get('lists').addListener(this);
- Collections.get('tasks').addListener(this);
- Collections.get('boards').addSource(
- {
- http_base_url: 'tasks/board',
- http_options: {
- workspace_id: Workspaces.currentWorkspaceId,
- },
- websockets: [
- { uri: 'boards/' + Workspaces.currentWorkspaceId, options: { type: 'board' } },
- ],
- },
- this.tasks_collection_key,
- );
- }
- componentWillUnmount() {
- Languages.removeListener(this);
- Collections.get('boards').removeSource(this.tasks_collection_key);
- Collections.get('lists').removeSource(this.tasks_collection_key);
- Collections.get('tasks').removeSource(this.tasks_collection_key);
- Collections.get('boards').removeListener();
- Collections.get('lists').removeListener();
- Collections.get('tasks').removeListener();
- }
- selectBoard(board) {
- if (this.collection_key.indexOf(this.tasks_collection_key + '_' + board.id) < 0) {
- this.collection_key.push(this.tasks_collection_key + '_' + board.id);
- Collections.get('lists').addSource(
- {
- http_base_url: 'tasks/list',
- http_options: {
- board_id: board.id,
- },
- websockets: [{ uri: 'board_lists/' + board.id, options: { type: 'list' } }],
- },
- this.tasks_collection_key + '_' + board.id,
- );
- Collections.get('tasks').addSource(
- {
- http_base_url: 'tasks/task',
- http_options: {
- board_id: board.id,
- },
- websockets: [{ uri: 'board_tasks/' + board.id, options: { type: 'task' } }],
- },
- this.tasks_collection_key + '_' + board.id + '_tasks',
- );
- }
- this.setState({ currentBoard: board });
- }
- selectList(list) {
- this.setState({ currentList: list });
- }
- selectTask(task) {
- this.setState({ taskSelected: task });
- }
- submit() {
- if (this.props.mode === 'select_task' && this.state.taskSelected) {
- if (this.props.onChoose) {
- this.props.onChoose(this.state.taskSelected);
- }
- }
- }
- renderBoardPicker() {
- var boards = Collections.get('boards').findBy({ workspace_id: Workspaces.currentWorkspaceId });
- var loading =
- !Collections.get('boards').did_load_first_time[this.tasks_collection_key] &&
- boards.length === 0;
- return (
-
- {loading && (
-
-
-
- )}
- {!loading &&
- boards.map(board => {
- return (
-
this.selectBoard(board)}>
-
- {board.emoji && (
-
- )}
-
{board.title}
-
-
- );
- })}
-
- );
- }
- renderListPicker() {
- var loading =
- !Collections.get('lists').did_load_first_time[
- this.tasks_collection_key + '_' + this.state.currentBoard.id
- ];
- var lists = Collections.get('lists').findBy({ board_id: this.state.currentBoard.id });
- return (
-
- {loading && (
-
-
-
- )}
- {!loading &&
- lists
- .sort(
- (a, b) =>
- TasksService.getElementIndex(a, 'lists_' + a.board_id) -
- TasksService.getElementIndex(b, 'lists_' + b.board_id),
- )
- .map((item, index) => {
- return (
-
{
- this.selectList(item);
- }}
- >
-
-
{item.title}
-
- );
- })}
-
- );
- }
- renderTaskPicker() {
- var loading =
- !Collections.get('tasks').did_load_first_time[
- this.tasks_collection_key + '_' + this.state.currentBoard.id + '_tasks'
- ];
- var tasks = Collections.get('tasks').findBy({
- board_id: this.state.currentBoard.id,
- list_id: this.state.currentList.id,
- archived: false,
- });
- return (
-
- {loading && (
-
-
-
- )}
- {!loading &&
- (tasks || [])
- .sort(
- (a, b) =>
- TasksService.getElementIndex(a, 'tasks_' + a.list_id) -
- TasksService.getElementIndex(b, 'tasks_' + b.list_id),
- )
- .map((item, index) => (
-
{
- this.selectTask(item);
- }}
- >
-
{item.title}
-
- ))}
-
- );
- }
- render() {
- return (
-
- {!this.state.currentBoard && (
-
{Languages.t('scenes.apps.tasks.task')}
- )}
- {this.state.currentBoard && !this.state.currentList && (
-
- {
- Collections.get('lists').removeListener();
- this.setState({ currentBoard: null });
- }}
- />
- {this.state.currentBoard.title}
-
- )}
- {this.state.currentBoard && this.state.currentList && (
-
- {
- Collections.get('tasks').removeListener();
- this.setState({ currentList: null });
- }}
- />
- {this.state.currentBoard.title} - {this.state.currentList.title}
-
- )}
-
- {!this.state.currentBoard && this.renderBoardPicker()}
- {this.state.currentBoard && !this.state.currentList && this.renderListPicker()}
- {this.state.currentBoard && this.state.currentList && this.renderTaskPicker()}
-
-
- {this.props.mode === 'select_task' &&
- this.state.taskSelected &&
- this.state.taskSelected.id && (
-
-
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/task-picker/task-picker.scss b/tdrive/frontend/src/app/components/task-picker/task-picker.scss
deleted file mode 100755
index 494d8ed0..00000000
--- a/tdrive/frontend/src/app/components/task-picker/task-picker.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-.taskPicker {
- position: relative;
- .title {
- background: #ffffff;
- margin-bottom: 0px;
- font-size: 16px;
- color: #000;
- line-height: 20px;
- padding-bottom: 8px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- .getback {
- background: var(--grey-background);
- border-radius: var(--border-radius-base);
- width: 20px;
- height: 20px;
- vertical-align: top;
- margin-right: 5px;
- margin-left: 0px;
- cursor: pointer;
- }
- }
- .list {
- height: 150px;
- overflow: auto;
- width: 100%;
- .loading {
- position: absolute;
- margin: auto;
- width: 50px;
- height: 50px;
- right: 0px;
- bottom: 0px;
- top: 0px;
- left: 0px;
- }
- .picker_item {
- display: flex;
- flex-direction: row;
- padding-left: 8px;
- padding-right: 8px;
- bottom: 0px;
- color: var(--black);
- height: 40px;
- font-weight: 500;
- width: 100%;
- box-sizing: border-box;
- border-top: 1px solid var(--grey-background);
- font-size: 14px;
- cursor: pointer;
- .text {
- display: inline-block;
- line-height: 40px;
- margin-left: 6px;
- }
- .board_emoji_picker {
- vertical-align: top;
- line-height: 40px;
- }
- .colorBloc {
- height: 30px;
- width: 4px;
- margin-top: 5px;
- }
- }
- .picker_item:hover {
- background: var(--primary-background);
- border-color: #fff;
- }
- .is_selected {
- background: var(--primary);
- color: #fff;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/ui/user-connection-dot.jsx b/tdrive/frontend/src/app/components/ui/user-connection-dot.jsx
deleted file mode 100755
index 00006f8b..00000000
--- a/tdrive/frontend/src/app/components/ui/user-connection-dot.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React, { Component } from 'react';
-import './elements.scss';
-
-export default class UserConnectionDot extends React.Component {
- render() {
- if (this.props.connected && !this.props.notificationsDisabled) {
- return ;
- } else if (!this.props.connected && !this.props.notificationsDisabled) {
- return ;
- } else {
- return ;
- }
- }
-}
diff --git a/tdrive/frontend/src/app/components/user-picker/user-picker.jsx b/tdrive/frontend/src/app/components/user-picker/user-picker.jsx
deleted file mode 100755
index 73aa581f..00000000
--- a/tdrive/frontend/src/app/components/user-picker/user-picker.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import React, { Component } from 'react';
-import Picker from 'components/picker/picker.jsx';
-import Icon from '@components/icon/icon.jsx';
-import './user-picker.scss';
-import User from 'components/ui/user.jsx';
-import UsersService from '@features/users/services/current-user-service';
-import Languages from '@features/global/services/languages-service';
-
-export default class UserPicker extends React.Component {
- /*
- hello
- */
- constructor(props) {
- super();
- this.props = props;
- this.state = {
- currentSelected: [],
- inputValue: '',
- currentList: [],
- selected: [],
- };
- }
- componentWillUnmount() {}
- onUpdate(item) {}
- onRemove(item, ev) {}
- renderItem(item, withEditor) {
- return (
-
-
-
- {!this.props.readOnly && withEditor && (
-
{
- this.picker.onRemove(item);
- ev.stopPropagation();
- ev.preventDefault();
- }}
- >
-
-
- )}
-
- );
- }
- search(text, cb) {
- UsersService.search(text, { scope: this.props.scope || 'all' }, res => {
- cb(res);
- });
- }
- render() {
- return (
- {
- this.picker = picker;
- }}
- title={
- this.props.title || Languages.t('components.drive.modify_uslist', [], 'Modify user list')
- }
- search={(text, cb) => {
- this.search(text, cb);
- }}
- renderItem={item => {
- return this.renderItem(item, false);
- }}
- renderItemChoosen={item => {
- return this.renderItem(item, true);
- }}
- renderItemSimply={item => {
- item = item || {};
- return item.username;
- }}
- max={10}
- onSelect={item => this.onSelect(item)}
- onChange={this.props.onChange}
- value={this.props.value}
- readOnly={this.props.readOnly}
- inline={this.props.inline}
- />
- );
- }
-}
diff --git a/tdrive/frontend/src/app/components/user-picker/user-picker.scss b/tdrive/frontend/src/app/components/user-picker/user-picker.scss
deleted file mode 100755
index 1600cc2f..00000000
--- a/tdrive/frontend/src/app/components/user-picker/user-picker.scss
+++ /dev/null
@@ -1,50 +0,0 @@
-.userPicker {
- .itemSelected {
- display: inline-flex;
- max-width: 100%;
-
- .user_bloc {
- flex: 1;
- }
- .close {
- font-size: 8px;
- margin-left: 5px;
- opacity: 0.4;
- display: inline-block;
- margin-right: -1px;
- bottom: 0px;
- position: relative;
- vertical-align: top;
- margin-top: 5px;
- }
- .close:hover {
- opacity: 0.8;
- cursor: pointer;
- }
- }
- .itemContoured {
- display: inline-flex;
- box-sizing: border-box;
- color: #000;
- margin: 5px;
- height: 18px;
- line-height: 16px;
- font-size: 12px;
- text-transform: capitalize;
- border-radius: 9px;
- padding-right: 6px;
-
- &.mini {
- padding-right: 0px;
- margin-right: 0px;
- }
- }
- .pickerInput:not(.readOnly) {
- .itemContoured:hover {
- background: #eee;
- }
- }
- .menu .itemContoured {
- margin: 3px;
- }
-}
diff --git a/tdrive/frontend/src/app/components/user/user.jsx b/tdrive/frontend/src/app/components/user/user.jsx
index 44df083e..0e9ff5ef 100755
--- a/tdrive/frontend/src/app/components/user/user.jsx
+++ b/tdrive/frontend/src/app/components/user/user.jsx
@@ -2,7 +2,6 @@
import React, { Component } from 'react';
import UserService from '@features/users/services/current-user-service';
-import NotificationParameters from '@deprecated/user/notification_parameters.js';
import ListenUsers from '@features/users/services/listen-users-service';
import UserOnlineStatus from '../online-user-status/online-user-status';
@@ -21,9 +20,6 @@ export default class User extends Component {
render() {
var user = this.props.user;
var notifications_disabled = false;
- if (user && NotificationParameters.hasNotificationsDisabled(user.notifications_preferences)) {
- notifications_disabled = true;
- }
return (
{
- this.last_change[id] = new Date();
- });
- this.selected_per_type[this.type] = {};
- this.notify();
- }
-
- setType(type) {
- if (type !== this.type) {
- this.type = type;
- if (!this.selected_per_type[this.type]) {
- this.selected_per_type[this.type] = {};
- }
- }
- }
-
- //Observable improvement, a listener can listen only for modifications on some objects to prevent massive notify and state updates
- listenOnly(listener, object_front_ids) {
- if (!listener._observable) {
- listener._observable = {};
- }
- if (!listener._observable[this.observableName]) {
- listener._observable[this.observableName] = {};
- }
- listener._observable[this.observableName].listen_only = object_front_ids;
- }
- shouldNotify(node) {
- if (!this._last_modified) {
- this._last_modified = {};
- }
- var update = true;
- if (
- node._observable &&
- node._observable[this.observableName] &&
- node._observable[this.observableName].listen_only
- ) {
- update = false;
- // eslint-disable-next-line array-callback-return
- node._observable[this.observableName].listen_only.map(item => {
- if (!this._last_modified[item] || this.last_change[item] > this._last_modified[item]) {
- this._last_modified[item] = this.last_change[item];
- update = true;
- }
- });
- }
- return update;
- }
-}
-
-const service = new SelectionsManager();
-export default service;
diff --git a/tdrive/frontend/src/app/deprecated/user/notification_parameters.js b/tdrive/frontend/src/app/deprecated/user/notification_parameters.js
deleted file mode 100755
index 999140e8..00000000
--- a/tdrive/frontend/src/app/deprecated/user/notification_parameters.js
+++ /dev/null
@@ -1,213 +0,0 @@
-import Languages from '@features/global/services/languages-service';
-import Observable from '@deprecated/CollectionsV1/observable.js';
-import ws from '@deprecated/websocket/websocket.js';
-import Api from '@features/global/framework/api-service';
-import Login from '@features/auth/login-service';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-import AlertManager from '@features/global/services/alert-manager-service';
-
-import Globals from '@features/global/services/globals-tdrive-app-service';
-
-/**
- * FIXME: This service seems still used by some components but we now have ./NotificationPreferences one which seems to overlap...
- */
-class NotificationParameters extends Observable {
- constructor() {
- super();
- this.setObservableName('notifications_parameters');
-
- Globals.window.notificationsParametersServices = this;
-
- this.preferences = {};
- this.loading = true;
- }
-
- initFirstTime() {
- //Save default 'do not disturb' with correct timezone
- this.init();
- }
-
- init(callback) {
- this.loading = true;
- this.notify();
- var that = this;
- Api.post('/ajax/users/account/get_notifications', {}, function (res) {
- that.preferences = res.data;
- that.original_preferences = JSON.parse(JSON.stringify(that.preferences));
-
- if (that.preferences['dont_disturb_between'] == null) {
- var l = that.transform_period(22, 8.5, new Date().getTimezoneOffset() / 60);
- that.preferences['dont_disturb_between'] = l[0];
- that.preferences['dont_disturb_and'] = l[1];
- that.save(['dont_disturb_and', 'dont_disturb_between']);
- }
-
- that.loading = false;
- that.notify();
-
- if (callback) callback();
- });
- }
-
- save(keys, no_notif) {
- if (!keys) {
- keys = [];
- }
-
- if (!this.preferences) {
- return;
- }
-
- if (!keys || keys.length === 0) {
- this.original_preferences = JSON.parse(JSON.stringify(this.preferences));
- }
-
- this.notify();
- var data = {
- preferences: JSON.parse(JSON.stringify(this.original_preferences)),
- };
-
- keys.forEach(key => {
- data.preferences[key] = this.preferences[key];
- });
- this.original_preferences = data.preferences;
-
- this.saveElements(data.preferences, no_notif);
- }
-
- saveElements(pref, no_notif) {
- var data = {
- preferences: JSON.parse(JSON.stringify(pref)),
- };
- var user = Collections.get('users').find(Login.currentUserId);
- if (!user.notifications_preferences) {
- user.notifications_preferences = {};
- }
- Object.keys(pref).forEach(key => {
- user.notifications_preferences[key] = pref[key];
- });
- Collections.get('users').updateObject(user);
-
- this.loading = true;
- var that = this;
- Api.post('/ajax/users/account/set_notifications', data, function (res) {
- that.loading = false;
- ws.publish('users/' + Login.currentUserId, {
- user: {
- notifications_preferences: Collections.get('users').find(Login.currentUserId)
- .notifications_preferences,
- },
- });
- that.notify();
-
- if (!no_notif) {
- AlertManager.alert(() => {}, {
- text: Languages.t(
- 'services.user.notification_parameters_update_alert',
- [],
- 'Les paramètres de notification ont été mis à jour.',
- ),
- });
- }
- });
- }
-
- is_in_period(a, b) {
- var currentDate = new Date().getHours() + Math.floor(new Date().getMinutes() / 30) / 2;
- if (a != null && b != null) {
- if (a < b && currentDate >= a && currentDate < b) {
- return true;
- }
- if (a > b && (currentDate >= a || currentDate < b)) {
- return true;
- }
- }
- return false;
- }
-
- hasNotificationsDisabled(preferences) {
- if (!preferences) {
- return false;
- }
- var l = this.transform_period(
- preferences.dont_disturb_between,
- preferences.dont_disturb_and,
- -new Date().getTimezoneOffset() / 60,
- );
- if (this.is_in_period(l[0], l[1])) {
- return true;
- }
- if (preferences.disable_until > new Date().getTime() / 1000) {
- return true;
- }
- return false;
- }
-
- getNotificationsStatus(user) {
- this.dont_disturb = this.transform_period(
- (user.notifications_preferences || {}).dont_disturb_between,
- (user.notifications_preferences || {}).dont_disturb_and,
- -new Date().getTimezoneOffset() / 60,
- );
- var notifications_state = 'on';
- if (
- (user.notifications_preferences || {}).disable_until < new Date().getTime() / 1000 &&
- !this.is_in_period(this.dont_disturb[0], this.dont_disturb[1])
- ) {
- notifications_state = 'on';
- } else if (
- (user.notifications_preferences || {}).disable_until <
- new Date().getTime() / 1000 + 60 * 60 * 24 ||
- this.is_in_period(this.dont_disturb[0], this.dont_disturb[1])
- ) {
- notifications_state = 'paused';
- } else {
- notifications_state = 'off';
- }
- return notifications_state;
- }
-
- transform_period(a, b, offset) {
- a = parseFloat(a);
- b = parseFloat(b);
-
- if (offset > 0) {
- offset += -24;
- }
-
- a += offset;
- b += offset;
-
- if (a < 0 || b < 0) {
- a += 24;
- b += 24;
-
- if (b >= 24) {
- if (a < b) {
- b += -24;
- } else {
- b += -24;
- var c = b;
- b = a;
- a = c;
- }
- }
-
- if (a >= 24) {
- if (b < a) {
- a += -24;
- } else {
- a += -24;
- // eslint-disable-next-line no-redeclare
- var c = a;
- a = b;
- b = c;
- }
- }
- }
-
- return [a, b];
- }
-}
-
-export default new NotificationParameters();
diff --git a/tdrive/frontend/src/app/deprecated/workspaces/listen_workspace.js b/tdrive/frontend/src/app/deprecated/workspaces/listen_workspace.js
deleted file mode 100755
index 4811dd40..00000000
--- a/tdrive/frontend/src/app/deprecated/workspaces/listen_workspace.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import ws from '@deprecated/websocket/websocket.js';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-
-class ListenWorkspace {
- constructor() {
- this.workspaces_repository = Collections.get('workspaces');
- this.listenerCount = {};
- }
-
- listenWorkspace(idWorkspace) {
- if (!idWorkspace) {
- return;
- }
-
- if (!this.listenerCount[idWorkspace]) {
- this.listenerCount[idWorkspace] = 0;
- }
- this.listenerCount[idWorkspace] += 1;
-
- var that = this;
- if (this.listenerCount[idWorkspace] === 1) {
- ws.subscribe('workspace/' + idWorkspace, function (uri, data) {
- if (data.workspace) {
- data.workspace.id = idWorkspace;
- that.workspaces_repository.updateObject(data.workspace);
- }
- });
- }
- }
-
- cancelListenWorkspace(idWorkspace) {
- if (!idWorkspace) {
- return;
- }
-
- if (this.listenerCount[idWorkspace]) {
- this.listenerCount[idWorkspace] += -1;
- }
- if (!this.listenerCount[idWorkspace] || this.listenerCount[idWorkspace] === 0) {
- ws.unsubscribe('workspace/' + idWorkspace);
- }
- }
-}
-
-const service = new ListenWorkspace();
-export default service;
diff --git a/tdrive/frontend/src/app/features/files/hooks/use-upload.ts b/tdrive/frontend/src/app/features/files/hooks/use-upload.ts
index d9534f6f..45a596db 100644
--- a/tdrive/frontend/src/app/features/files/hooks/use-upload.ts
+++ b/tdrive/frontend/src/app/features/files/hooks/use-upload.ts
@@ -1,9 +1,8 @@
import FileUploadService from '@features/files/services/file-upload-service';
+import RouterServices from '@features/router/services/router-service';
import { useRecoilState, useRecoilValue } from 'recoil';
import { PendingFilesListState } from '../state/atoms/pending-files-list';
import { CurrentTaskSelector } from '../state/selectors/current-task';
-import RouterServices from '@features/router/services/router-service';
-import { AttachedFileType } from '@features/files/types/file';
export const useUpload = () => {
const { companyId } = RouterServices.getStateFromRoute();
diff --git a/tdrive/frontend/src/app/features/files/services/file-upload-service.ts b/tdrive/frontend/src/app/features/files/services/file-upload-service.ts
index 01a8c3aa..d998043f 100644
--- a/tdrive/frontend/src/app/features/files/services/file-upload-service.ts
+++ b/tdrive/frontend/src/app/features/files/services/file-upload-service.ts
@@ -2,15 +2,14 @@
/* eslint-disable @typescript-eslint/ban-types */
import { v1 as uuid } from 'uuid';
-import { FileType, PendingFileType } from '@features/files/types/file';
import JWTStorage from '@features/auth/jwt-storage-service';
-import RouterServices from '@features/router/services/router-service';
+import { FileType, PendingFileType } from '@features/files/types/file';
import Resumable from '@features/files/utils/resumable';
+import Logger from '@features/global/framework/logger-service';
+import RouterServices from '@features/router/services/router-service';
+import _ from 'lodash';
import FileUploadAPIClient from '../api/file-upload-api-client';
import { isPendingFileStatusPending } from '../utils/pending-files';
-import Logger from '@features/global/framework/logger-service';
-import _ from 'lodash';
-import { AttachedFileType } from '@features/files/types/file';
export enum Events {
ON_CHANGE = 'notify',
diff --git a/tdrive/frontend/src/app/features/global/utils/Autocomplete.js b/tdrive/frontend/src/app/features/global/utils/Autocomplete.js
deleted file mode 100755
index 8dfbfb45..00000000
--- a/tdrive/frontend/src/app/features/global/utils/Autocomplete.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import Observable from '@deprecated/CollectionsV1/observable.js';
-
-class Autocomplete extends Observable {
- constructor() {
- super();
- this.observableName = 'autocompleteService';
- this.isOpen = false;
- }
-
- open() {
- this.isOpen = true;
- this.notify();
- }
-
- close() {
- this.isOpen = false;
- this.notify();
- }
-}
-
-const autocompleteService = new Autocomplete();
-export default autocompleteService;
diff --git a/tdrive/frontend/src/app/features/search/hooks/use-search-drive-items.tsx b/tdrive/frontend/src/app/features/search/hooks/use-search-drive-items.tsx
index 51f38be2..c03ebdaa 100644
--- a/tdrive/frontend/src/app/features/search/hooks/use-search-drive-items.tsx
+++ b/tdrive/frontend/src/app/features/search/hooks/use-search-drive-items.tsx
@@ -1,13 +1,13 @@
-import { delayRequest } from '@features/global/utils/managedSearchRequest';
-import { useRecoilState, useRecoilValue } from 'recoil';
-import { SearchInputState } from '../state/search-input';
import { DriveApiClient } from '@features/drive/api-client/api-client';
-import { LoadingState } from '@features/global/state/atoms/Loading';
-import { SearchDriveItemsResultsState } from '../state/search-drive-items-result';
-import { RecentDriveItemsState } from '../state/recent-drive-items';
-import _ from 'lodash';
import { useGlobalEffect } from '@features/global/hooks/use-global-effect';
+import { LoadingState } from '@features/global/state/atoms/Loading';
+import { delayRequest } from '@features/global/utils/managedSearchRequest';
import useRouterCompany from '@features/router/hooks/use-router-company';
+import _ from 'lodash';
+import { useRecoilState, useRecoilValue } from 'recoil';
+import { RecentDriveItemsState } from '../state/recent-drive-items';
+import { SearchDriveItemsResultsState } from '../state/search-drive-items-result';
+import { SearchInputState } from '../state/search-input';
import { useSearchModal } from './use-search';
export const useSearchDriveItemsLoading = () => {
diff --git a/tdrive/frontend/src/app/views/client/popup/UserParameter/Pages/Assistant.tsx b/tdrive/frontend/src/app/views/client/popup/UserParameter/Pages/Assistant.tsx
deleted file mode 100755
index 836d5b12..00000000
--- a/tdrive/frontend/src/app/views/client/popup/UserParameter/Pages/Assistant.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import Languages from '@features/global/services/languages-service';
-import * as Text from '@atoms/text';
-import { ToasterService as Toaster } from '@features/global/services/toaster-service';
-import UserAPIClient from '@features/users/api/user-api-client';
-import { useCurrentUser } from '@features/users/hooks/use-current-user';
-import Radio from 'components/inputs/radio.jsx';
-
-export type preferencesType = Record
;
-export type AssistantPreferencesType = {
- user_id: string;
- company_id: string;
- workspace_id: string;
- preferences: preferencesType;
-};
-
-let locked = false;
-
-export default () => {
- const { user, refresh } = useCurrentUser();
-
- const setPreferences = async (value: 'all' | 'nothing' | 'metadata') => {
- if (locked) return;
- locked = true;
- try {
- await UserAPIClient.setUserPreferences({
- knowledge_graph: value,
- });
- await refresh();
- Toaster.success(Languages.t('scenes.apps.account.assistant.success'));
- } catch (err) {
- Toaster.error('' + err);
- }
- locked = false;
- };
-
- return (
- <>
- {Languages.t('scenes.apps.account.assistant.title')}
-
- {Languages.t('scenes.apps.account.assistant.description')}
-
-
- {
- setPreferences('nothing');
- }}
- />
-
-
- {
- setPreferences('metadata');
- }}
- />
-
-
- {
- setPreferences('all');
- }}
- />
-
- >
- );
-};
diff --git a/tdrive/frontend/src/app/views/client/popup/UserParameter/UserParameter.jsx b/tdrive/frontend/src/app/views/client/popup/UserParameter/UserParameter.jsx
index 23a9bb5a..1b63ad33 100755
--- a/tdrive/frontend/src/app/views/client/popup/UserParameter/UserParameter.jsx
+++ b/tdrive/frontend/src/app/views/client/popup/UserParameter/UserParameter.jsx
@@ -1,26 +1,24 @@
/* eslint-disable react/prop-types */
/* eslint-disable react/jsx-key */
-import React, { Component } from 'react';
+import { Component } from 'react';
-import Languages from '@features/global/services/languages-service';
-import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
-import LoginService from '@features/auth/login-service';
-import popupManager from '@deprecated/popupManager/popupManager.js';
-import userService from '@features/users/services/current-user-service';
-import currentUserService from '@deprecated/user/CurrentUser';
-import uploadService from '@deprecated/uploadManager/upload-manager.js';
-import ButtonWithTimeout from 'components/buttons/button-with-timeout.jsx';
-import Attribute from 'components/parameters/attribute.jsx';
-import Assistant from './Pages/Assistant';
-import MenuList from 'components/menus/menu-component.jsx';
-import './UserParameter.scss';
-import Input from 'components/inputs/input.jsx';
-import { Button } from '../../../../atoms/button/button';
-import { ExternalLinkIcon } from '@heroicons/react/outline';
-import InitService from '@features/global/services/init-service';
-import * as Text from '../../../../atoms/text';
-import workspaceService from '@deprecated/workspaces/workspaces.jsx';
import { getFilesTree } from '@components/uploads/file-tree-utils';
+import Collections from '@deprecated/CollectionsV1/Collections/Collections.js';
+import popupManager from '@deprecated/popupManager/popupManager.js';
+import currentUserService from '@deprecated/user/CurrentUser';
+import workspaceService from '@deprecated/workspaces/workspaces.jsx';
+import LoginService from '@features/auth/login-service';
+import InitService from '@features/global/services/init-service';
+import Languages from '@features/global/services/languages-service';
+import userService from '@features/users/services/current-user-service';
+import { ExternalLinkIcon } from '@heroicons/react/outline';
+import ButtonWithTimeout from 'components/buttons/button-with-timeout.jsx';
+import Input from 'components/inputs/input.jsx';
+import MenuList from 'components/menus/menu-component.jsx';
+import Attribute from 'components/parameters/attribute.jsx';
+import { Button } from '../../../../atoms/button/button';
+import * as Text from '../../../../atoms/text';
+import './UserParameter.scss';
export default class UserParameter extends Component {
constructor(props) {
@@ -605,9 +603,6 @@ export default class UserParameter extends Component {
);
}
- if (this.state.page === 4) {
- return ;
- }
}
setPage(page) {
@@ -630,18 +625,6 @@ export default class UserParameter extends Component {
this.setPage(1);
},
},
- {
- type: 'menu',
- text: this.state.i18n.t('scenes.apps.account.assistant.title'),
- emoji: ':robot:',
- hide:
- document.location.origin === 'https://web.tdrive.app' &&
- workspaceService.currentGroupId !== '56393af2-e5fe-11e9-b894-0242ac120004',
- selected: this.state.page === 4 ? 'selected' : '',
- onClick: () => {
- this.setPage(4);
- },
- },
]}
/>
diff --git a/tdrive/frontend/src/app/views/login/internal/internal-login.tsx b/tdrive/frontend/src/app/views/login/internal/internal-login.tsx
index 632b4e8a..6ef02282 100755
--- a/tdrive/frontend/src/app/views/login/internal/internal-login.tsx
+++ b/tdrive/frontend/src/app/views/login/internal/internal-login.tsx
@@ -9,7 +9,6 @@ import Icon from '@components/icon/icon.jsx';
import LoginView from './login-view/login-view';
import Signin from './signin/signin.jsx';
-import VerifyMail from './verify-mail/verify-mail.jsx';
import ForgotPassword from './forgot-password/index.jsx';
import Error from './error';
@@ -45,7 +44,6 @@ export default () => {
{LoginService.state === 'error' && }
{LoginService.state === 'logged_out' && }
{LoginService.state === 'signin' && }
- {LoginService.state === 'verify_mail' && }
{LoginService.state === 'forgot_password' && }
diff --git a/tdrive/frontend/src/app/views/login/internal/verify-mail/verify-mail.jsx b/tdrive/frontend/src/app/views/login/internal/verify-mail/verify-mail.jsx
deleted file mode 100755
index 363b413d..00000000
--- a/tdrive/frontend/src/app/views/login/internal/verify-mail/verify-mail.jsx
+++ /dev/null
@@ -1,101 +0,0 @@
-import React, { Component } from 'react';
-
-import Languages from '@features/global/services/languages-service';
-import LoginService from '@features/auth/login-service';
-import AccountService from '@deprecated/login/account';
-import Emojione from 'components/emojione/emojione';
-import WindowState from '@features/global/utils/window';
-
-export default class VerifyMail extends Component {
- constructor() {
- super();
-
- this.state = {
- login: LoginService,
- i18n: Languages,
- status: 'pending',
- };
- LoginService.addListener(this);
- Languages.addListener(this);
- }
- componentDidMount() {
- AccountService.doVerifyMail(
- WindowState.findGetParameter('m'),
- WindowState.findGetParameter('c'),
- WindowState.findGetParameter('token'),
- () => {
- this.setState({ status: 'success' });
- document.location.replace('/');
- LoginService.init();
- },
- () => {
- this.setState({ status: 'error' });
- },
- );
- }
- componentWillUnmount() {
- LoginService.removeListener(this);
- Languages.removeListener(this);
- }
- render() {
- return (
-
-
-
-
- {Languages.t('scenes.login.verifymail.alert', [], 'Nous vérifions votre e-mail !')}
-
-
- {this.state.status === 'pending' && (
-
- {' '}
- {Languages.t(
- 'scenes.login.verifymail.verification_waiting',
- [],
- 'En attente de vérification...',
- )}
-
- )}
-
- {this.state.status === 'success' && [
-
- {' '}
- {Languages.t(
- 'scenes.login.verifymail.success',
- [],
- 'Votre e-mail a été vérifié avec succès!',
- )}
-
,
- // eslint-disable-next-line jsx-a11y/anchor-is-valid
-
(document.location = '/')} className="blue_link" key="scenes.login.verifymail.signin_button">
- {Languages.t('scenes.login.verifymail.signin_button', [], 'Se connecter')}
- ,
- ]}
-
- {this.state.status === 'error' && [
-
- {' '}
- {Languages.t(
- 'scenes.login.verifymail.error_message',
- [],
- "Une erreur s'est produite",
- )}
-
,
- // eslint-disable-next-line jsx-a11y/anchor-is-valid
-
{
- LoginService.changeState('signin');
- document.location.replace('/');
- }}
- className="blue_link"
- >
- {this.state.i18n.t('scenes.login.home.create_account')}
- ,
- ]}
-
-
-
- );
- }
-}