summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-04-28 19:10:26 -0400
committerMicah Lee <micah@micahflee.com>2021-04-28 19:10:26 -0400
commit0de27f9775cf5231e0d7bdf5a2b388e5d1b7ee52 (patch)
tree9cffa342da50cad4035b1ce6b879554c890ead1f
parent2acdea52298695549dfe25260ed59df88b6c3a2c (diff)
downloadonionshare-0de27f9775cf5231e0d7bdf5a2b388e5d1b7ee52.tar.gz
onionshare-0de27f9775cf5231e0d7bdf5a2b388e5d1b7ee52.zip
WIP: Starting to make messages in receive mode work in GUI
-rw-r--r--cli/onionshare_cli/mode_settings.py2
-rw-r--r--cli/onionshare_cli/web/receive_mode.py27
-rw-r--r--desktop/src/onionshare/resources/locale/en.json2
-rw-r--r--desktop/src/onionshare/tab/mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/mode/receive_mode/__init__.py32
5 files changed, 62 insertions, 7 deletions
diff --git a/cli/onionshare_cli/mode_settings.py b/cli/onionshare_cli/mode_settings.py
index c2e5e6cd..7b545623 100644
--- a/cli/onionshare_cli/mode_settings.py
+++ b/cli/onionshare_cli/mode_settings.py
@@ -53,6 +53,8 @@ class ModeSettings:
"receive": {
"data_dir": self.build_default_receive_data_dir(),
"webhook_url": None,
+ "disable_text": False,
+ "disable_files": False,
},
"website": {"disable_csp": False, "filenames": []},
"chat": {"room": "default"},
diff --git a/cli/onionshare_cli/web/receive_mode.py b/cli/onionshare_cli/web/receive_mode.py
index f52e691e..7d2f0d7d 100644
--- a/cli/onionshare_cli/web/receive_mode.py
+++ b/cli/onionshare_cli/web/receive_mode.py
@@ -26,6 +26,17 @@ from datetime import datetime
from flask import Request, request, render_template, make_response, flash, redirect
from werkzeug.utils import secure_filename
+"""
+Receive mode uses a special flask requests object, ReceiveModeRequest, in
+order to keep track of upload progress. Here's what happens when someone
+uploads files:
+
+- new ReceiveModeRequest object is created
+- creates a directory based on the timestamp
+-
+
+"""
+
class ReceiveModeWeb:
"""
@@ -90,18 +101,20 @@ class ReceiveModeWeb:
with open(local_path, "w") as f:
f.write(text_message)
- basename = os.path.basename(local_path)
-
- # TODO: possibly change this
+ # Tell the GUI a message has been uploaded
self.web.add_request(
- self.web.REQUEST_UPLOAD_SET_DIR,
- request.path,
+ self.web.REQUEST_STARTED,
+ local_path,
{
"id": request.history_id,
- "filename": basename,
- "dir": request.receive_mode_dir,
+ "content_length": len(text_message),
},
)
+ self.web.add_request(
+ self.web.REQUEST_UPLOAD_FINISHED,
+ local_path,
+ {"id": request.history_id},
+ )
self.common.log(
"ReceiveModeWeb",
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/src/onionshare/resources/locale/en.json
index 20569c57..55e39d73 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/src/onionshare/resources/locale/en.json
@@ -174,6 +174,8 @@
"mode_settings_share_autostop_sharing_checkbox": "Stop sharing after files have been sent (uncheck to allow downloading individual files)",
"mode_settings_receive_data_dir_label": "Save files to",
"mode_settings_receive_data_dir_browse_button": "Browse",
+ "mode_settings_receive_disable_text_checkbox": "Disable submitting text",
+ "mode_settings_receive_disable_files_checkbox": "Disable uploading files",
"mode_settings_receive_webhook_url_checkbox": "Use notification webhook",
"mode_settings_website_disable_csp_checkbox": "Don't send Content Security Policy header (allows your website to use third-party resources)",
"gui_all_modes_transfer_finished_range": "Transferred {} - {}",
diff --git a/desktop/src/onionshare/tab/mode/__init__.py b/desktop/src/onionshare/tab/mode/__init__.py
index 0cbccc51..9cd8fe81 100644
--- a/desktop/src/onionshare/tab/mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/__init__.py
@@ -453,6 +453,12 @@ class Mode(QtWidgets.QWidget):
"""
pass
+ def handle_request_upload_message(self, event):
+ """
+ Handle REQUEST_UPLOAD_MESSAGE event.
+ """
+ pass
+
def handle_request_upload_set_dir(self, event):
"""
Handle REQUEST_UPLOAD_SET_DIR event.
diff --git a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
index 464cfcef..64e7aebf 100644
--- a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
@@ -78,6 +78,28 @@ class ReceiveMode(Mode):
data_dir_layout.addWidget(data_dir_button)
self.mode_settings_widget.mode_specific_layout.addLayout(data_dir_layout)
+ # Disable text
+ self.disable_text_checkbox = self.settings.get("receive", "disable_files")
+ self.disable_text_checkbox = QtWidgets.QCheckBox()
+ self.disable_text_checkbox.clicked.connect(self.disable_text_checkbox_clicked)
+ self.disable_text_checkbox.setText(
+ strings._("mode_settings_receive_disable_text_checkbox")
+ )
+ self.mode_settings_widget.mode_specific_layout.addWidget(
+ self.disable_text_checkbox
+ )
+
+ # Disable files
+ self.disable_files_checkbox = self.settings.get("receive", "disable_files")
+ self.disable_files_checkbox = QtWidgets.QCheckBox()
+ self.disable_files_checkbox.clicked.connect(self.disable_files_checkbox_clicked)
+ self.disable_files_checkbox.setText(
+ strings._("mode_settings_receive_disable_files_checkbox")
+ )
+ self.mode_settings_widget.mode_specific_layout.addWidget(
+ self.disable_files_checkbox
+ )
+
# Webhook URL
webhook_url = self.settings.get("receive", "webhook_url")
self.webhook_url_checkbox = QtWidgets.QCheckBox()
@@ -212,6 +234,16 @@ class ReceiveMode(Mode):
self.data_dir_lineedit.setText(selected_dir)
self.settings.set("receive", "data_dir", selected_dir)
+ def disable_text_checkbox_clicked(self):
+ self.settings.set(
+ "receive", "disable_text", self.disable_text_checkbox.isChecked()
+ )
+
+ def disable_files_checkbox_clicked(self):
+ self.settings.set(
+ "receive", "disable_files", self.disable_files_checkbox.isChecked()
+ )
+
def webhook_url_checkbox_clicked(self):
if self.webhook_url_checkbox.isChecked():
if self.settings.get("receive", "webhook_url"):