From bb391c8f98a515fce92339df7571fc5568f67aa8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 28 Sep 2020 17:25:22 +0100 Subject: [PATCH] Revert "Remove wait screen" This reverts commit 1c0770120c7c213808b30819120064c201cae8bf. --- daemon.py | 205 +++++++++++++++++++++++++++++++++++++++++++ translations/ar.json | 4 +- translations/ca.json | 4 +- translations/cy.json | 4 +- translations/de.json | 4 +- translations/en.json | 4 +- translations/es.json | 4 +- translations/fr.json | 4 +- translations/ga.json | 4 +- translations/hi.json | 4 +- translations/it.json | 4 +- translations/ja.json | 4 +- translations/oc.json | 4 +- translations/pt.json | 4 +- translations/ru.json | 4 +- translations/zh.json | 4 +- webinterface.py | 21 +++++ 17 files changed, 271 insertions(+), 15 deletions(-) diff --git a/daemon.py b/daemon.py index 4881fca5..99e90a77 100644 --- a/daemon.py +++ b/daemon.py @@ -152,6 +152,7 @@ from webinterface import rssHashtagSearch from webinterface import htmlModerationInfo from webinterface import htmlSearchSharedItems from webinterface import htmlHashtagBlocked +from webinterface import htmlSendingPost from shares import getSharesFeedForPerson from shares import addShare from shares import removeShare @@ -9132,6 +9133,62 @@ class PubServer(BaseHTTPRequestHandler): self._set_headers_head(mediaFileType, fileLength, etag, callingDomain) + def _showSendingScreen(self, authorized: bool, callingDomain: str) -> None: + """Shows a 'sending post' wait screen + """ + if self.server.defaultTimeline != 'inbox': + return + if not self._requestHTTP(): + return + # make a copy of the headers + currHeaders = self.headers.items() + + # show a sending post screen + msg = \ + htmlSendingPost(self.server.baseDir, + self.server.translate).encode('utf-8') + self._login_headers('text/html', len(msg), callingDomain) + self._write(msg) + self.wfile.flush() + + # restore headers + for headerField in currHeaders: + fieldName = headerField[0] + fieldValue = headerField[1] + self.headers[fieldName] = fieldValue + + def _clearSendingScreen(self, authorized: bool, + boxName: str, path: str, + callingDomain: str, cookie: str) -> None: + """Redirects to the given box + """ + if boxName != 'inbox': + return + if not self._requestHTTP(): + return + self._showInbox(authorized, + callingDomain, self.path, + self.server.baseDir, + self.server.httpPrefix, + self.server.domain, + self.server.domainFull, + self.server.port, + self.server.onionDomain, + self.server.i2pDomain, + None, None, + self.server.proxyType, + cookie, self.server.debug, + self.server.recentPostsCache, + self.server.session, + self.server.defaultTimeline, + self.server.maxRecentPosts, + self.server.translate, + self.server.cachedWebfingers, + self.server.personCache, + self.server.allowDeletion, + self.server.projectVersion, + self.server.YTReplacementDomain) + def _receiveNewPostProcess(self, postType: str, path: str, headers: {}, length: int, postBytes, boundary: str, callingDomain: str, cookie: str, @@ -9277,6 +9334,12 @@ class PubServer(BaseHTTPRequestHandler): else: privateEvent = True + # self._showSendingScreen(authorized, callingDomain) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) + if postType == 'newpost': messageJson = \ createPublicPost(self.server.baseDir, @@ -9295,6 +9358,10 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 if self._postToOutbox(messageJson, __version__, nickname): @@ -9304,8 +9371,16 @@ class PubServer(BaseHTTPRequestHandler): messageJson, self.server.maxReplies, self.server.debug) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newblog': messageJson = \ @@ -9323,6 +9398,10 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 if self._postToOutbox(messageJson, __version__, nickname): populateReplies(self.server.baseDir, @@ -9331,8 +9410,16 @@ class PubServer(BaseHTTPRequestHandler): messageJson, self.server.maxReplies, self.server.debug) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'editblogpost': print('Edited blog post received') @@ -9401,6 +9488,10 @@ class PubServer(BaseHTTPRequestHandler): self.server.YTReplacementDomain) saveJson(postJsonObject, postFilename) print('Edited blog post, resaved ' + postFilename) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: print('Edited blog post, unable to load json for ' + @@ -9408,6 +9499,9 @@ class PubServer(BaseHTTPRequestHandler): else: print('Edited blog post not found ' + str(fields['postUrl'])) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 elif postType == 'newunlisted': messageJson = \ @@ -9429,6 +9523,10 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 if self._postToOutbox(messageJson, __version__, nickname): populateReplies(self.server.baseDir, @@ -9437,8 +9535,16 @@ class PubServer(BaseHTTPRequestHandler): messageJson, self.server.maxReplies, self.server.debug) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newfollowers': messageJson = \ @@ -9462,6 +9568,10 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 if self._postToOutbox(messageJson, __version__, nickname): populateReplies(self.server.baseDir, @@ -9470,8 +9580,16 @@ class PubServer(BaseHTTPRequestHandler): messageJson, self.server.maxReplies, self.server.debug) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newevent': # A Mobilizon-type event is posted @@ -9522,10 +9640,22 @@ class PubServer(BaseHTTPRequestHandler): fields['ticketUrl']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 if self._postToOutbox(messageJson, __version__, nickname): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newdm': messageJson = None @@ -9553,6 +9683,10 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 print('Sending new DM to ' + str(messageJson['object']['to'])) @@ -9563,8 +9697,16 @@ class PubServer(BaseHTTPRequestHandler): messageJson, self.server.maxReplies, self.server.debug) + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newreminder': messageJson = None @@ -9591,16 +9733,32 @@ class PubServer(BaseHTTPRequestHandler): fields['location']) if messageJson: if fields['schedulePost']: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 print('DEBUG: new reminder to ' + str(messageJson['object']['to'])) if self._postToOutbox(messageJson, __version__, nickname): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newreport': if attachmentMediaType: if attachmentMediaType != 'image': + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 # So as to be sure that this only goes to moderators # and not accounts being reported we disable any @@ -9619,13 +9777,28 @@ class PubServer(BaseHTTPRequestHandler): self.server.debug, fields['subject']) if messageJson: if self._postToOutbox(messageJson, __version__, nickname): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 else: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 elif postType == 'newquestion': if not fields.get('duration'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 if not fields.get('message'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 # questionStr = fields['message'] qOptions = [] @@ -9634,6 +9807,9 @@ class PubServer(BaseHTTPRequestHandler): qOptions.append(fields['questionOption' + str(questionCtr)]) if not qOptions: + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 messageJson = \ createQuestionPost(self.server.baseDir, @@ -9653,19 +9829,42 @@ class PubServer(BaseHTTPRequestHandler): if self.server.debug: print('DEBUG: new Question') if self._postToOutbox(messageJson, __version__, nickname): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return 1 + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 elif postType == 'newshare': if not fields.get('itemType'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 if not fields.get('category'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 if not fields.get('location'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 if not fields.get('duration'): + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 if attachmentMediaType: if attachmentMediaType != 'image': + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, + cookie) return -1 durationStr = fields['duration'] if durationStr: @@ -9687,7 +9886,13 @@ class PubServer(BaseHTTPRequestHandler): if os.path.isfile(filename): os.remove(filename) self.postToNickname = nickname + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return 1 + self._clearSendingScreen(authorized, + self.server.defaultTimeline, + self.path, callingDomain, cookie) return -1 def _receiveNewPost(self, postType: str, path: str, diff --git a/translations/ar.json b/translations/ar.json index b519fa59..8bc009ea 100644 --- a/translations/ar.json +++ b/translations/ar.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "علامات التجزئة المُنشأة تلقائيًا", "Autogenerated Content Warnings": "تحذيرات المحتوى المُنشأ تلقائيًا", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag محظور" + "Hashtag Blocked": "Hashtag محظور", + "Sending Post": "إرسال آخر", + "Please wait": "ارجوك انتظر" } diff --git a/translations/ca.json b/translations/ca.json index 62736ad2..051525ec 100644 --- a/translations/ca.json +++ b/translations/ca.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags autogenerats", "Autogenerated Content Warnings": "Advertiments de contingut autogenerats", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag bloquejat" + "Hashtag Blocked": "Hashtag bloquejat", + "Sending Post": "S'està enviant el missatge", + "Please wait": "Espereu, si us plau" } diff --git a/translations/cy.json b/translations/cy.json index 89f52d7e..3a04f108 100644 --- a/translations/cy.json +++ b/translations/cy.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags awtogeneiddiedig", "Autogenerated Content Warnings": "Rhybuddion Cynnwys Autogenerated", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag wedi'i Blocio" + "Hashtag Blocked": "Hashtag wedi'i Blocio", + "Sending Post": "Post Anfon", + "Please wait": "Arhoswch os gwelwch yn dda" } diff --git a/translations/de.json b/translations/de.json index e3bc529b..d3d09752 100644 --- a/translations/de.json +++ b/translations/de.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Automatisch generierte Hashtags", "Autogenerated Content Warnings": "Warnungen vor automatisch generierten Inhalten", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag blockiert" + "Hashtag Blocked": "Hashtag blockiert", + "Sending Post": "Post senden", + "Please wait": "Warten Sie mal" } diff --git a/translations/en.json b/translations/en.json index c85bbfe8..688d4d8a 100644 --- a/translations/en.json +++ b/translations/en.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Autogenerated Hashtags", "Autogenerated Content Warnings": "Autogenerated Content Warnings", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag Blocked" + "Hashtag Blocked": "Hashtag Blocked", + "Sending Post": "Sending Post", + "Please wait": "Please wait" } diff --git a/translations/es.json b/translations/es.json index 6fe9c141..fecc2022 100644 --- a/translations/es.json +++ b/translations/es.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags autogenerados", "Autogenerated Content Warnings": "Advertencias de contenido generado automáticamente", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag bloqueada" + "Hashtag Blocked": "Hashtag bloqueada", + "Sending Post": "Envío de publicación", + "Please wait": "por favor espera" } diff --git a/translations/fr.json b/translations/fr.json index 4a1fb6cb..53f4d7c3 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags générés automatiquement", "Autogenerated Content Warnings": "Avertissements de contenu générés automatiquement", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag bloqué" + "Hashtag Blocked": "Hashtag bloqué", + "Sending Post": "Envoi du message", + "Please wait": "S'il vous plaît, attendez" } diff --git a/translations/ga.json b/translations/ga.json index 1c1266ba..90392720 100644 --- a/translations/ga.json +++ b/translations/ga.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags uathghinte", "Autogenerated Content Warnings": "Rabhaidh Ábhar Uathghinte", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag Blocáilte" + "Hashtag Blocked": "Hashtag Blocáilte", + "Sending Post": "Post Seolta", + "Please wait": "Fán le do thoil" } diff --git a/translations/hi.json b/translations/hi.json index bff59966..7ca0f005 100644 --- a/translations/hi.json +++ b/translations/hi.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "ऑटोजेनरेटेड हैशटैग", "Autogenerated Content Warnings": "स्वतः प्राप्त सामग्री चेतावनी", "Indymedia": "Indymedia", - "Hashtag Blocked": "हैशटैग अवरुद्ध" + "Hashtag Blocked": "हैशटैग अवरुद्ध", + "Sending Post": "पोस्ट भेज रहा है", + "Please wait": "कृपया प्रतीक्षा कीजिये" } diff --git a/translations/it.json b/translations/it.json index 08ff2618..5e953664 100644 --- a/translations/it.json +++ b/translations/it.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtag generati automaticamente", "Autogenerated Content Warnings": "Avvisi sui contenuti generati automaticamente", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag bloccato" + "Hashtag Blocked": "Hashtag bloccato", + "Sending Post": "Invio di post", + "Please wait": "attendere prego" } diff --git a/translations/ja.json b/translations/ja.json index 382b43cc..3c5cc3fc 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "自動生成されたハッシュタグ", "Autogenerated Content Warnings": "自動生成されたコンテンツの警告", "Indymedia": "Indymedia", - "Hashtag Blocked": "ハッシュタグがブロックされました" + "Hashtag Blocked": "ハッシュタグがブロックされました", + "Sending Post": "投稿を送信する", + "Please wait": "お待ちください" } diff --git a/translations/oc.json b/translations/oc.json index 9a0cf46e..edf65b99 100644 --- a/translations/oc.json +++ b/translations/oc.json @@ -283,5 +283,7 @@ "Autogenerated Hashtags": "Autogenerated Hashtags", "Autogenerated Content Warnings": "Autogenerated Content Warnings", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag Blocked" + "Hashtag Blocked": "Hashtag Blocked", + "Sending Post": "Sending Post", + "Please wait": "Please wait" } diff --git a/translations/pt.json b/translations/pt.json index 72314d67..b2c82b63 100644 --- a/translations/pt.json +++ b/translations/pt.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Hashtags autogeradas", "Autogenerated Content Warnings": "Avisos de conteúdo gerado automaticamente", "Indymedia": "Indymedia", - "Hashtag Blocked": "Hashtag bloqueada" + "Hashtag Blocked": "Hashtag bloqueada", + "Sending Post": "Enviando postagem", + "Please wait": "Por favor, espere" } diff --git a/translations/ru.json b/translations/ru.json index cb7a0b21..2308cddc 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "Автоматически сгенерированные хештеги", "Autogenerated Content Warnings": "Автоматические предупреждения о содержании", "Indymedia": "Indymedia", - "Hashtag Blocked": "Хештег заблокирован" + "Hashtag Blocked": "Хештег заблокирован", + "Sending Post": "Отправка сообщения", + "Please wait": "пожалуйста, подождите" } diff --git a/translations/zh.json b/translations/zh.json index a171135f..f572b9c3 100644 --- a/translations/zh.json +++ b/translations/zh.json @@ -287,5 +287,7 @@ "Autogenerated Hashtags": "自动生成的标签", "Autogenerated Content Warnings": "自动生成的内容警告", "Indymedia": "Indymedia", - "Hashtag Blocked": "标签被阻止" + "Hashtag Blocked": "标签被阻止", + "Sending Post": "发送帖子", + "Please wait": "请稍候" } diff --git a/webinterface.py b/webinterface.py index 200ae4c1..a30c232d 100644 --- a/webinterface.py +++ b/webinterface.py @@ -2006,6 +2006,27 @@ def htmlHashtagBlocked(baseDir: str, translate: {}) -> str: return blockedHashtagForm +def htmlSendingPost(baseDir: str, translate: {}) -> str: + """A wait screen while sending a post + """ + sendForm = '' + cssFilename = baseDir + '/epicyon-send.css' + if os.path.isfile(baseDir + '/send.css'): + cssFilename = baseDir + '/send.css' + with open(cssFilename, 'r') as cssFile: + sendingCSS = cssFile.read() + sendForm = htmlHeader(cssFilename, sendingCSS) + sendForm += '
\n' + sendForm += \ + '

' + \ + translate['Sending Post'] + '

\n' + sendForm += \ + '

' + translate['Please wait'] + '

\n' + sendForm += '
\n' + sendForm += htmlFooter() + return sendForm + + def htmlSuspended(baseDir: str) -> str: """Show the screen for suspended accounts """