Fileserver update

This commit is contained in:
Vincent 2020-02-05 10:08:55 +11:00
commit 4fd2126fbe
84 changed files with 481 additions and 624 deletions

View file

@ -9,15 +9,13 @@ Remember, you can preview this before saving it.
### First time contributor checklist:
* [ ] I have read the [README](https://github.com/signalapp/Signal-Desktop/blob/master/README.md) and [Contributor Guidelines](https://github.com/signalapp/Signal-Desktop/blob/master/CONTRIBUTING.md)
* [ ] I have signed the [Contributor Licence Agreement](https://signal.org/cla/)
* [ ] I have read the [README](https://github.com/loki-project/loki-messenger/blob/master/README.md) and [Contributor Guidelines](https://github.com/loki-project/loki-messenger/blob/master/CONTRIBUTING.md)
### Contributor checklist:
* [ ] My contribution is **not** related to translations. _Please submit translation changes via our [Signal Desktop Transifex project](https://www.transifex.com/signalapp/signal-desktop/)._
* [ ] My commits are in nice logical chunks with [good commit messages](http://chris.beams.io/posts/git-commit/)
* [ ] My changes are [rebased](https://medium.freecodecamp.org/git-rebase-and-the-golden-rule-explained-70715eccc372) on the latest [`development`](https://github.com/signalapp/Signal-Desktop/tree/development) branch
* [ ] A `yarn ready` run passes successfully ([more about tests here](https://github.com/signalapp/Signal-Desktop/blob/master/CONTRIBUTING.md#tests))
* [ ] My changes are [rebased](https://medium.freecodecamp.org/git-rebase-and-the-golden-rule-explained-70715eccc372) on the latest [`clearnet`](https://github.com/loki-project/loki-messenger/tree/development) branch
* [ ] A `yarn ready` run passes successfully ([more about tests here](https://github.com/loki-project/loki-messenger/blob/master/CONTRIBUTING.md#tests))
* [ ] My changes are ready to be shipped to users
### Description
@ -26,7 +24,7 @@ Remember, you can preview this before saving it.
Describe briefly what your pull request changes. Focus on the value provided to users.
Does it address any outstanding issues in this project?
https://github.com/signalapp/Signal-Desktop/issues?utf8=%E2%9C%93&q=is%3Aissue
https://github.com/loki-project/loki-messenger/issues?utf8=%E2%9C%93&q=is%3Aissue
Reference an issue with the hash symbol: "#222"
If you're fixing it, use something like "Fixes #222"

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Condicions de servei i política de privadesa",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Smluvní podmínky a zásady ochrany osobních údajů",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Vilkår og privatlivspolitik",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Bedingungen & Datenschutzerklärung",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Όροι & Πολιτική Απορρήτου",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -2,7 +2,7 @@
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description":
"Shown in the about box for the link to https://signal.org/legal"
"Shown in the about box for the link to https://getsession.org/privacy-policy/"
},
"copyErrorAndQuit": {
"message": "Copy error and quit",
@ -651,12 +651,14 @@
"An error popup when the user has attempted to add an attachment"
},
"cannotMixImageAndNonImageAttachments": {
"message": "Sorry, you cannot mix images with other file types in one message",
"message":
"Sorry, you cannot mix images with other file types in one message",
"description":
"An error popup when the user has attempted to add an attachment"
},
"maximumAttachments": {
"message": "Maximum number of attachments reached. Please send remaining attachments in a separate message.",
"message":
"Maximum number of attachments reached. Please send remaining attachments in a separate message.",
"description":
"An error popup when the user has attempted to add an attachment"
},
@ -933,7 +935,7 @@
},
"cannotUpdateDetail": {
"message":
"Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"Signal Desktop failed to update, but there is a new version available. Please go to https://getsession.org/ and install the new version manually, then either contact support or file a bug about this problem.",
"description":
"Shown if a general error happened while trying to install update package"
},
@ -1380,9 +1382,10 @@
"message": "Warning"
},
"linkPreviewsConfirmMessage": {
"message": "You will not have full metadata protection when sending or receiving link previews."
"message":
"You will not have full metadata protection when sending or receiving link previews."
},
"mediaPermissionsTitle": {
"message": "Microphone and Camera"
},
@ -1445,7 +1448,8 @@
"description": "Title of the read receipts setting"
},
"typingIndicatorsSettingDescription": {
"message": "See and share when messages are being typed (applies to all sessions).",
"message":
"See and share when messages are being typed (applies to all sessions).",
"description": "Description of the typing indicators setting"
},
"typingIndicatorsSettingTitle": {
@ -1658,7 +1662,8 @@
"description": "Brief message shown when trying to message a blocked number"
},
"unblockGroupToSend": {
"message": "This group is blocked. Unlock it if you would like to send a message.",
"message":
"This group is blocked. Unlock it if you would like to send a message.",
"description": "Brief message shown when trying to message a blocked group"
},
"youChangedTheTimer": {

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Kondiĉoj de uzo kaj regularo pri privateco",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Términos y política de privacidad",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -1396,9 +1396,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Tingimused ja privaatsuspoliitika",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "شرایط و سیاست های حفظ حریم خصوصی",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Käyttöehdot ja tietosuoja",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Conditions générales dutilisation et politique de confidentialité",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "תנאים ומדיניות פרטיות",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Uvjeti i pravila o privatnosti",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Adatvédelmi és Általános Szerződési Feltételek",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Syarat & Kebijakan Privasi",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Termini e privacy policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "使用条件とプライバシーポリシー",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "លក្ខខណ្ឌ និងគោលនយោបាយឯកជនភាព",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Sąlygos ir Privatumo politika",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Vilkår og personvernerklæring",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Gebruiksvoorwaarden & privacybeleid",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Vilkår og personvernfråsegn",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Vilkår og personvernerklæring",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Warunki korzystania & Polityka prywatności",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Termos & Política de Privacidade",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Termos e política de privacidade",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Termeni și politica de confidențialitate",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Условия и политика конфиденциальности",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Podmienky a Ochrana osobných údajov",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Pogoji uporabe in Pravilnik o zasebnosti",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Kushte & Rregulla Privatësie",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Licens- och sekretessvillkor",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "เงื่อนไขและนโยบายความเป็นส่วนตัว",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Şartlar ve Gizlilik İlkesi",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Умови використання та політика конфіденційності",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "无法更新",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "协议与隐私政策",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -797,10 +797,6 @@
"message": "Cannot Update",
"description": "Shown as the title of our update error dialogs on windows"
},
"cannotUpdateDetail": {
"message": "Signal Desktop failed to update, but there is a new version available. Please go to https://signal.org/download and install the new version manually, then either contact support or file a bug about this problem.",
"description": "Shown if a general error happened while trying to install update package"
},
"readOnlyVolume": {
"message": "Signal Desktop is likely in a macOS quarantine, and will not be able to auto-update. Please try moving Signal.app to /Applications with Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update"
@ -1536,9 +1532,5 @@
"example": "Alice, Bob"
}
}
},
"privacyPolicy": {
"message": "服務條款與隱私政策",
"description": "Shown in the about box for the link to https://signal.org/legal"
}
}

View file

@ -26,7 +26,7 @@
<!--
When making changes to these templates, be sure to update test/index.html as well
-->
<script type='text/x-tmpl-mustache' id='app-loading-screen'>
<div class='content'>
<img src='images/session/full-logo.svg' class='session-full-logo' />
@ -75,10 +75,11 @@
</script>
<script type='text/x-tmpl-mustache' id='expired_alert'>
<a target='_blank' href='https://signal.org/download/'>
<a target='_blank' href='https://getsession.org/'>
<button class='upgrade'>{{ upgrade }}</button>
</a>
{{ expiredWarning }}
<span>{{ expiredWarning }}</span>
<br clear="both">
</script>
<script type='text/x-tmpl-mustache' id='banner'>
@ -185,7 +186,7 @@
</div>
</div>
</script>
<script type='text/x-tmpl-mustache' id='device-pairing-words-dialog'>
<div class="content">
<h4>{{ title }}</h4>
@ -584,7 +585,7 @@
<script type='text/javascript' src='js/views/moderators_add_dialog_view.js'></script>
<script type='text/javascript' src='js/views/moderators_remove_dialog_view.js'></script>
<script type='text/javascript' src='js/views/user_details_dialog_view.js'></script>
<script type='text/javascript' src='js/wall_clock_listener.js'></script>
<script type='text/javascript' src='js/rotate_signed_prekey_listener.js'></script>
<script type='text/javascript' src='js/keychange_listener.js'></script>

View file

@ -24,7 +24,7 @@
}
],
"disableAutoUpdate": true,
"updatesUrl": "https://updates2.signal.org/desktop",
"updatesUrl": "TODO",
"updatesPublicKey":
"fd7dd3de7149dc0a127909fee7de0f7620ddd0de061b37a2c303e37de802a401",
"updatesEnabled": false,
@ -36,5 +36,5 @@
"import": false,
"serverTrustRoot": "BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx",
"defaultPublicChatServer": "https://chat.getsession.org",
"defaultFileServer": "https://file.lokinet.org"
"defaultFileServer": "https://file.getsession.org"
}

Binary file not shown.

View file

@ -2114,7 +2114,9 @@
// If we don't return early here, we can get into infinite error loops. So, no
// delivery receipts for sealed sender errors.
if (isError || !data.unidentifiedDeliveryReceived) {
// Note(LOKI): don't send receipt for FR as we don't have a session yet
if (isError || !data.unidentifiedDeliveryReceived || data.friendRequest) {
return message;
}

View file

@ -1,22 +1,80 @@
/* global LokiAppDotNetServerAPI, LokiFileServerAPI, semver, log */
// eslint-disable-next-line func-names
(function() {
'use strict';
let BUILD_EXPIRATION = 0;
try {
BUILD_EXPIRATION = parseInt(window.getExpiration(), 10);
if (BUILD_EXPIRATION) {
window.log.info(
'Build expires: ',
new Date(BUILD_EXPIRATION).toISOString()
);
// hold last result
let expiredVersion = null;
window.tokenlessFileServerAdnAPI = new LokiAppDotNetServerAPI(
'', // no pubkey needed
window.getDefaultFileServer()
);
window.tokenlessFileServerAdnAPI.pubKey = window.Signal.Crypto.base64ToArrayBuffer(
LokiFileServerAPI.secureRpcPubKey
);
const checkForUpgrades = async () => {
const response = await window.tokenlessFileServerAdnAPI.serverRequest(
'loki/v1/version/client/desktop'
);
if (response && response.response) {
const latestVer = semver.clean(response.response.data[0][0]);
if (semver.valid(latestVer)) {
const ourVersion = window.getVersion();
if (latestVer === ourVersion) {
log.info('You have the latest version', latestVer);
// change the following to true ot test/see expiration banner
expiredVersion = false;
} else {
// expire if latest is newer than current
expiredVersion = semver.gt(latestVer, ourVersion);
if (expiredVersion) {
log.info('There is a newer version available', latestVer);
}
}
}
} else {
// give it a minute
log.warn('Could not check to see if newer version is available');
setTimeout(async () => {
await checkForUpgrades();
}, 60 * 1000); // wait a minute
}
} catch (e) {
// nothing
}
// no message logged means serverRequest never returned...
};
checkForUpgrades();
window.extension = window.extension || {};
window.extension.expired = () =>
BUILD_EXPIRATION && Date.now() > BUILD_EXPIRATION;
// eslint-disable-next-line no-unused-vars
const resolveWhenReady = (res, rej) => {
if (expiredVersion !== null) {
return res(expiredVersion);
}
function waitForVersion() {
if (expiredVersion !== null) {
return res(expiredVersion);
}
log.info('Delaying sending checks for 1s, no version yet');
setTimeout(waitForVersion, 1000);
return true;
}
waitForVersion();
return true;
};
window.extension.expiredPromise = () => new Promise(resolveWhenReady);
window.extension.expired = cb => {
if (expiredVersion === null) {
// just give it another second
log.info('Delaying expire banner determination for 1s');
setTimeout(() => {
window.extension.expired(cb);
}, 1000);
return;
}
// yes we know
cb(expiredVersion);
};
})();

View file

@ -1,9 +1,10 @@
/* global log, textsecure, libloki, Signal, Whisper, Headers, ConversationController,
/* global log, textsecure, libloki, Signal, Whisper, ConversationController,
clearTimeout, MessageController, libsignal, StringView, window, _,
dcodeIO, Buffer, lokiSnodeAPI, TextDecoder */
dcodeIO, Buffer, lokiSnodeAPI, TextDecoder, process */
const nodeFetch = require('node-fetch');
const { URL, URLSearchParams } = require('url');
const FormData = require('form-data');
const https = require('https');
// Can't be less than 1200 if we have unauth'd requests
const PUBLICCHAT_MSG_POLL_EVERY = 1.5 * 1000; // 1.5s
@ -19,6 +20,10 @@ const MESSAGE_ATTACHMENT_TYPE = 'net.app.core.oembed';
const LOKI_ATTACHMENT_TYPE = 'attachment';
const LOKI_PREVIEW_TYPE = 'preview';
const snodeHttpsAgent = new https.Agent({
rejectUnauthorized: false,
});
// the core ADN class that handles all communication with a specific server
class LokiAppDotNetServerAPI {
constructor(ourKey, url) {
@ -53,6 +58,12 @@ class LokiAppDotNetServerAPI {
channelId,
conversationId
);
log.info(
'LokiPublicChannelAPI started for',
channelId,
'on',
this.baseServerUrl
);
this.channels.push(thisChannel);
}
return thisChannel;
@ -220,9 +231,11 @@ class LokiAppDotNetServerAPI {
async refreshServerToken() {
// if currently not in progress
if (this.tokenPromise === null) {
// FIXME: add timeout
// a broken/stuck token endpoint can prevent you from removing channels
// set lock
this.tokenPromise = new Promise(async res => {
// request the oken
// request the token
const token = await this.requestToken();
if (!token) {
res(null);
@ -255,11 +268,13 @@ class LokiAppDotNetServerAPI {
};
url.search = new URLSearchParams(params);
res = await nodeFetch(url);
res = await this.proxyFetch(url);
} catch (e) {
log.error('requestToken request failed', e);
return null;
}
if (!res.ok) {
log.error('requestToken request failed');
return null;
}
const body = await res.json();
@ -281,7 +296,7 @@ class LokiAppDotNetServerAPI {
};
try {
const res = await nodeFetch(
const res = await this.proxyFetch(
`${this.baseServerUrl}/loki/v1/submit_challenge`,
options
);
@ -291,7 +306,32 @@ class LokiAppDotNetServerAPI {
}
}
async _sendToProxy(fetchOptions, method, headers, endpoint) {
async proxyFetch(urlObj, fetchOptions) {
if (
window.lokiFeatureFlags.useSnodeProxy &&
(this.baseServerUrl === 'https://file-dev.lokinet.org' ||
this.baseServerUrl === 'https://file.getsession.org')
) {
const finalOptions = { ...fetchOptions };
if (!fetchOptions.method) {
finalOptions.method = 'GET';
}
const urlStr = urlObj.toString();
const endpoint = urlStr.replace(`${this.baseServerUrl}/`, '');
const { response, result } = await this._sendToProxy(
endpoint,
finalOptions
);
// emulate nodeFetch response...
return {
ok: result.status === 200,
json: () => response,
};
}
return nodeFetch(urlObj, fetchOptions);
}
async _sendToProxy(endpoint, fetchOptions) {
const randSnode = await lokiSnodeAPI.getRandomSnodeAddress();
const url = `https://${randSnode.ip}:${randSnode.port}/file_proxy`;
@ -299,8 +339,8 @@ class LokiAppDotNetServerAPI {
// I think this is a stream, we may need to collect it all?
body: fetchOptions.body, // might need to b64 if binary...
endpoint,
method,
headers,
method: fetchOptions.method,
headers: fetchOptions.headers,
};
// from https://github.com/sindresorhus/is-stream/blob/master/index.js
@ -361,7 +401,10 @@ class LokiAppDotNetServerAPI {
'X-Loki-File-Server-Verb': 'POST',
'X-Loki-File-Server-Headers': JSON.stringify(finalRequestHeader),
},
// we are talking to a snode...
agent: snodeHttpsAgent,
};
// weird this doesn't need NODE_TLS_REJECT_UNAUTHORIZED = 0
const result = await nodeFetch(url, firstHopOptions);
const txtResponse = await result.text();
@ -419,7 +462,12 @@ class LokiAppDotNetServerAPI {
} else if (rawBody) {
fetchOptions.body = rawBody;
}
fetchOptions.headers = new Headers(headers);
fetchOptions.headers = headers;
// domain ends in .loki
if (endpoint.match(/\.loki\//)) {
fetchOptions.agent = snodeHttpsAgent;
}
} catch (e) {
log.info('serverRequest set up error:', JSON.stringify(e));
return {
@ -435,23 +483,32 @@ class LokiAppDotNetServerAPI {
if (
window.lokiFeatureFlags.useSnodeProxy &&
(this.baseServerUrl === 'https://file-dev.lokinet.org' ||
this.baseServerUrl === 'https://file.lokinet.org')
this.baseServerUrl === 'https://file.getsession.org')
) {
mode = '_sendToProxy';
// have to send headers because fetchOptions.headers isn't readable
const endpointWithQS = url
.toString()
.replace(`${this.baseServerUrl}/`, '');
({ response, txtResponse, result } = await this._sendToProxy(
fetchOptions,
method,
headers,
endpoint
endpointWithQS,
fetchOptions
));
} else {
result = await nodeFetch(url, fetchOptions || undefined);
// disable check for .loki
process.env.NODE_TLS_REJECT_UNAUTHORIZED = endpoint.match(/\.loki\//) ? 0 : 1;
result = await nodeFetch(url, fetchOptions);
// always make sure this check is enabled
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
txtResponse = await result.text();
response = JSON.parse(txtResponse);
}
} catch (e) {
log.info(`serverRequest ${mode} error json: ${txtResponse}`);
if (txtResponse) {
log.info(`serverRequest ${mode} error`, e.code, e.message, `json: ${txtResponse}`);
} else {
log.info(`serverRequest ${mode} error`, e.code, e.message);
}
return {
err: e,
};
@ -714,7 +771,7 @@ class LokiAppDotNetServerAPI {
options
);
if (statusCode !== 200) {
log.warn('Failed to upload data to fileserver');
log.warn('Failed to upload data to server', this.baseServerUrl);
return null;
}

View file

@ -56,13 +56,17 @@ class LokiFileServerInstance {
// FIXME: this is not file-server specific
// and is currently called by LokiAppDotNetAPI.
// LokiAppDotNetAPI (base) should not know about LokiFileServer.
async establishConnection(serverUrl) {
async establishConnection(serverUrl, options) {
// why don't we extend this?
this._server = new LokiAppDotNetAPI(this.ourKey, serverUrl);
// configure proxy
this._server.pubKey = this.pubKey;
if (options !== undefined && options.skipToken) {
return;
}
// get a token for multidevice
const gotToken = await this._server.getOrRefreshServerToken();
// TODO: Handle this failure gracefully
@ -307,11 +311,13 @@ class LokiFileServerFactoryAPI {
if (!thisServer) {
thisServer = new LokiFileServerInstance(this.ourKey);
log.info(`Registering FileServer ${serverUrl}`);
await thisServer.establishConnection(serverUrl);
await thisServer.establishConnection(serverUrl, { skipToken: true });
this.servers.push(thisServer);
}
return thisServer;
}
}
// smuggle some data out of this joint (for expire.js/version upgrade check)
LokiFileServerFactoryAPI.secureRpcPubKey = LOKIFOUNDATION_FILESERVER_PUBKEY;
module.exports = LokiFileServerFactoryAPI;

View file

@ -1,9 +1,14 @@
/* global log, libloki, textsecure, getStoragePubKey, lokiSnodeAPI, StringView,
libsignal, window, TextDecoder, TextEncoder, dcodeIO */
libsignal, window, TextDecoder, TextEncoder, dcodeIO, process */
const nodeFetch = require('node-fetch');
const https = require('https');
const { parse } = require('url');
const snodeHttpsAgent = new https.Agent({
rejectUnauthorized: false,
});
const LOKI_EPHEMKEY_HEADER = 'X-Loki-EphemKey';
const endpointBase = '/storage_rpc/v1';
@ -61,7 +66,11 @@ const sendToProxy = async (options = {}, targetNode) => {
},
};
// we only proxy to snodes...
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
const response = await nodeFetch(url, firstHopOptions);
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
const ciphertext = await response.text();
const ciphertextBuffer = dcodeIO.ByteBuffer.wrap(
@ -115,6 +124,9 @@ const lokiFetch = async (url, options = {}, targetNode = null) => {
timeout,
method,
};
if (url.match(/https:\/\//)) {
fetchOptions.agent = snodeHttpsAgent;
}
try {
if (window.lokiFeatureFlags.useSnodeProxy && targetNode) {
@ -122,7 +134,12 @@ const lokiFetch = async (url, options = {}, targetNode = null) => {
return result.json();
}
if (url.match(/https:\/\//)) {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
}
const response = await nodeFetch(url, fetchOptions);
// restore TLS checking
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1;
let result;
// Wrong swarm

View file

@ -63,14 +63,25 @@ class LokiRssAPI extends EventEmitter {
log.warn('LokiRssAPI unsupported rss feed', this.feedUrl);
return;
}
const response = await window.lokiFileServerAPI._server.serverRequest(
const result = await window.lokiFileServerAPI._server.serverRequest(
map[this.feedUrl]
);
if (!response) {
if (!result) {
log.error('LokiRssAPI empty rss proxy response');
return;
}
const responseXML = response.response.data;
if (!result.response) {
log.error('LokiRssAPI rss proxy error, no response', result);
return;
}
if (!result.response.data) {
log.error(
'LokiRssAPI rss proxy error, no data, response',
result.response
);
return;
}
const responseXML = result.response.data;
let feedDOM = {};
try {
feedDOM = await new window.DOMParser().parseFromString(

View file

@ -130,8 +130,8 @@
// so its loading screen doesn't stick around forever.
// Two primary techniques at play for this situation:
// - background.js has two openInbox() calls, and passes initalLoadComplete
// directly via the options parameter.
// - background.js has X number of openInbox() calls,
// and passes initalLoadComplete directly via the options parameter.
// - in other situations openInbox() will be called with no options. So this
// view keeps track of whether onEmpty() has ever been called with
// this.initialLoadComplete. An example of this: on a phone-pairing setup.

View file

@ -1859,7 +1859,8 @@
message = window.Signal.Emoji.replaceColons(message).trim();
const toastOptions = { type: 'info' };
if (extension.expired()) {
const expiredVersion = await extension.expiredPromise();
if (expiredVersion) {
toastOptions.title = i18n('expiredWarning');
toastOptions.id = 'expiredWarning';
}

View file

@ -236,7 +236,7 @@
id: 'maximumAttachments',
});
},
// Housekeeping
addAttachment(attachment) {
if (attachment.isVoiceNote && this.attachments.length > 0) {

View file

@ -156,11 +156,13 @@
.find('.network-status-container')
.append(this.networkStatusView.render().el);
if (extension.expired()) {
const banner = new Whisper.ExpiredAlertBanner().render();
banner.$el.prependTo(this.$el);
this.$el.addClass('expired');
}
extension.expired(expired => {
if (expired) {
const banner = new Whisper.ExpiredAlertBanner().render();
banner.$el.prependTo(this.$el);
this.$el.addClass('expired');
}
});
// FIXME: Fix this for new react views
this.updateInboxSectionUnread();
@ -393,7 +395,7 @@
Whisper.ExpiredAlertBanner = Whisper.View.extend({
templateName: 'expired_alert',
className: 'expiredAlert clearfix',
className: 'expiredAlert',
render_attributes() {
return {
expiredWarning: i18n('expiredWarning'),

View file

@ -654,6 +654,9 @@ MessageReceiver.prototype.extend({
},
async decrypt(envelope, ciphertext) {
let promise;
// We don't have source at this point yet (with sealed sender)
// This needs a massive cleanup!
const address = new libsignal.SignalProtocolAddress(
envelope.source,
envelope.sourceDevice
@ -668,33 +671,19 @@ MessageReceiver.prototype.extend({
options.messageKeysLimit = false;
}
// Will become obsolete
const sessionCipher = new libsignal.SessionCipher(
textsecure.storage.protocol,
address,
options
);
const secretSessionCipher = new window.Signal.Metadata.SecretSessionCipher(
textsecure.storage.protocol
);
const fallBackSessionCipher = new libloki.crypto.FallBackSessionCipher(
address
);
const me = {
number: ourNumber,
deviceId: parseInt(textsecure.storage.user.getDeviceId(), 10),
};
let conversation;
try {
conversation = await window.ConversationController.getOrCreateAndWait(
envelope.source,
'private'
);
} catch (e) {
window.log.info('Error getting conversation: ', envelope.source);
}
// Will become obsolete
const getCurrentSessionBaseKey = async () => {
const record = await sessionCipher.getRecord(address.toString());
if (!record) {
@ -707,71 +696,26 @@ MessageReceiver.prototype.extend({
const { baseKey } = openSession.indexInfo;
return baseKey;
};
// Will become obsolete
const captureActiveSession = async () => {
this.activeSessionBaseKey = await getCurrentSessionBaseKey(sessionCipher);
};
const restoreActiveSession = async () => {
const record = await sessionCipher.getRecord(address.toString());
if (!record) {
return;
}
record.archiveCurrentState();
const sessionToRestore = record.sessions[this.activeSessionBaseKey];
record.promoteState(sessionToRestore);
record.updateSessionState(sessionToRestore);
await textsecure.storage.protocol.storeSession(
address.toString(),
record.serialize()
);
};
const deleteAllSessionExcept = async sessionBaseKey => {
const record = await sessionCipher.getRecord(address.toString());
if (!record) {
return;
}
const sessionToKeep = record.sessions[sessionBaseKey];
record.sessions = {};
record.updateSessionState(sessionToKeep);
await textsecure.storage.protocol.storeSession(
address.toString(),
record.serialize()
);
};
let handleSessionReset;
if (conversation.isSessionResetOngoing()) {
handleSessionReset = async result => {
const currentSessionBaseKey = await getCurrentSessionBaseKey(
sessionCipher
);
if (
this.activeSessionBaseKey &&
currentSessionBaseKey !== this.activeSessionBaseKey
) {
if (conversation.isSessionResetReceived()) {
await restoreActiveSession();
} else {
await deleteAllSessionExcept(currentSessionBaseKey);
await conversation.onNewSessionAdopted();
}
} else if (conversation.isSessionResetReceived()) {
await deleteAllSessionExcept(this.activeSessionBaseKey);
await conversation.onNewSessionAdopted();
}
return result;
};
} else {
handleSessionReset = async result => result;
}
switch (envelope.type) {
case textsecure.protobuf.Envelope.Type.CIPHERTEXT:
window.log.info('message from', this.getEnvelopeId(envelope));
promise = captureActiveSession()
.then(() => sessionCipher.decryptWhisperMessage(ciphertext))
.then(this.unpad)
.then(handleSessionReset);
.then(this.unpad);
break;
case textsecure.protobuf.Envelope.Type.FRIEND_REQUEST: {
window.log.info('friend-request message from ', envelope.source);
const fallBackSessionCipher = new libloki.crypto.FallBackSessionCipher(
address
);
promise = fallBackSessionCipher
.decrypt(ciphertext.toArrayBuffer())
.then(this.unpad);
@ -779,30 +723,33 @@ MessageReceiver.prototype.extend({
}
case textsecure.protobuf.Envelope.Type.PREKEY_BUNDLE:
window.log.info('prekey message from', this.getEnvelopeId(envelope));
promise = captureActiveSession(sessionCipher)
.then(async () => {
if (!this.activeSessionBaseKey) {
try {
const buffer = dcodeIO.ByteBuffer.wrap(ciphertext);
await window.libloki.storage.verifyFriendRequestAcceptPreKey(
envelope.source,
buffer
);
} catch (e) {
await this.removeFromCache(envelope);
throw e;
}
promise = captureActiveSession(sessionCipher).then(async () => {
if (!this.activeSessionBaseKey) {
try {
const buffer = dcodeIO.ByteBuffer.wrap(ciphertext);
await window.libloki.storage.verifyFriendRequestAcceptPreKey(
envelope.source,
buffer
);
} catch (e) {
await this.removeFromCache(envelope);
throw e;
}
return this.decryptPreKeyWhisperMessage(
ciphertext,
sessionCipher,
address
);
})
.then(handleSessionReset);
}
return this.decryptPreKeyWhisperMessage(
ciphertext,
sessionCipher,
address
);
});
break;
case textsecure.protobuf.Envelope.Type.UNIDENTIFIED_SENDER:
case textsecure.protobuf.Envelope.Type.UNIDENTIFIED_SENDER: {
window.log.info('received unidentified sender message');
const secretSessionCipher = new window.Signal.Metadata.SecretSessionCipher(
textsecure.storage.protocol
);
promise = secretSessionCipher
.decrypt(ciphertext.toArrayBuffer(), me)
.then(
@ -872,9 +819,9 @@ MessageReceiver.prototype.extend({
throw error;
});
}
)
.then(handleSessionReset);
);
break;
}
default:
promise = Promise.reject(new Error('Unknown message type'));
}
@ -887,6 +834,82 @@ MessageReceiver.prototype.extend({
return null;
}
let conversation;
try {
conversation = await window.ConversationController.getOrCreateAndWait(
envelope.source,
'private'
);
} catch (e) {
window.log.info('Error getting conversation: ', envelope.source);
}
// lint hates anything after // (so /// is no good)
// *** BEGIN: session reset ***
// we have address in scope from parent scope
// seems to be the same input parameters
// going to comment out due to lint complaints
/*
const address = new libsignal.SignalProtocolAddress(
envelope.source,
envelope.sourceDevice
);
*/
const restoreActiveSession = async () => {
const record = await sessionCipher.getRecord(address.toString());
if (!record) {
return;
}
record.archiveCurrentState();
// NOTE: activeSessionBaseKey will be undefined here...
const sessionToRestore = record.sessions[this.activeSessionBaseKey];
record.promoteState(sessionToRestore);
record.updateSessionState(sessionToRestore);
await textsecure.storage.protocol.storeSession(
address.toString(),
record.serialize()
);
};
const deleteAllSessionExcept = async sessionBaseKey => {
const record = await sessionCipher.getRecord(address.toString());
if (!record) {
return;
}
const sessionToKeep = record.sessions[sessionBaseKey];
record.sessions = {};
record.updateSessionState(sessionToKeep);
await textsecure.storage.protocol.storeSession(
address.toString(),
record.serialize()
);
};
if (conversation.isSessionResetOngoing()) {
const currentSessionBaseKey = await getCurrentSessionBaseKey(
sessionCipher
);
if (
this.activeSessionBaseKey &&
currentSessionBaseKey !== this.activeSessionBaseKey
) {
if (conversation.isSessionResetReceived()) {
await restoreActiveSession();
} else {
await deleteAllSessionExcept(currentSessionBaseKey);
await conversation.onNewSessionAdopted();
}
} else if (conversation.isSessionResetReceived()) {
await deleteAllSessionExcept(this.activeSessionBaseKey);
await conversation.onNewSessionAdopted();
}
}
// lint hates anything after // (so /// is no good)
// *** END ***
// Type here can actually be UNIDENTIFIED_SENDER even if
// the underlying message is FRIEND_REQUEST
if (
@ -920,7 +943,7 @@ MessageReceiver.prototype.extend({
const noSession =
error &&
(error.message.indexOf('No record for device') === 0 ||
error.messaeg.indexOf('decryptWithSessionList: list is empty') ===
error.message.indexOf('decryptWithSessionList: list is empty') ===
0);
if (error && error.message === 'Unknown identity key') {

View file

@ -266,9 +266,15 @@ OutgoingMessage.prototype = {
return this.convertMessageToText(messageBuffer);
},
async wrapInWebsocketMessage(outgoingObject) {
const source =
outgoingObject.type ===
textsecure.protobuf.Envelope.Type.UNIDENTIFIED_SENDER
? null
: outgoingObject.ourKey;
const messageEnvelope = new textsecure.protobuf.Envelope({
type: outgoingObject.type,
source: outgoingObject.ourKey,
source,
sourceDevice: outgoingObject.sourceDevice,
timestamp: this.timestamp,
content: outgoingObject.content,

View file

@ -231,7 +231,7 @@
"publish": [
{
"provider": "generic",
"url": "https://updates.signal.org/desktop"
"url": "https://getsession.org/"
}
],
"target": [

View file

@ -27,6 +27,7 @@ window.Lodash = require('lodash');
// Regex to match all characters which are *not* supported in display names
window.displayNameRegex = /[^\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC _0-9]*/g;
window.semver = semver;
window.platform = process.platform;
window.getDefaultPoWDifficulty = () => config.defaultPoWDifficulty;
window.getTitle = () => title;
@ -75,9 +76,6 @@ window.versionInfo = {
appInstance: window.getAppInstance(),
};
// temporary clearnet fix
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
window.wrapDeferred = deferredToPromise;
const ipc = electron.ipcRenderer;
@ -371,6 +369,8 @@ window.LokiMessageAPI = require('./js/modules/loki_message_api');
window.LokiPublicChatAPI = require('./js/modules/loki_public_chat_api');
window.LokiAppDotNetServerAPI = require('./js/modules/loki_app_dot_net_api');
window.LokiFileServerAPI = require('./js/modules/loki_file_server_api');
window.LokiRssAPI = require('./js/modules/loki_rss_api');
@ -499,8 +499,8 @@ window.SMALL_GROUP_SIZE_LIMIT = 10;
window.lokiFeatureFlags = {
multiDeviceUnpairing: true,
privateGroupChats: true,
useSnodeProxy: false,
useSealedSender: false,
useSnodeProxy: true,
useSealedSender: true,
};
// eslint-disable-next-line no-extend-native,func-names

View file

@ -30,7 +30,10 @@
font-family: 'SF Pro Text';
src: url('../fonts/SFProText-Regular.ttf') format('truetype');
}
@font-face {
font-family: 'SF Pro Display';
src: url('../fonts/SFProDisplay-Regular.otf') format('opentype');
}
@keyframes fadein {
from {
opacity: 0;
@ -109,6 +112,8 @@ $session-font-h4: 16px;
$session-search-input-height: 34px;
$main-view-header-height: 85px;
$session-left-pane-width: 300px;
$session-left-pane-sections-container-width: 80px;
div.spacer-sm {
height: $session-margin-sm;
@ -176,7 +181,7 @@ $session-modal-size-lg: 650px;
$session-conversation-header-height: 60px;
@mixin fontWasaBold {
font-weight: 700;
font-weight: bold;
font-family: $session-font-family;
}
@ -480,6 +485,7 @@ $session-element-border-green: 4px solid $session-color-green;
font-family: Wasa;
width: 100%;
display: flex;
font-size: $session-font-md;
&-text {
@include session-color-subtle($session-color-white);
@ -1374,6 +1380,7 @@ label {
.session-id-editable textarea {
resize: none;
overflow: hidden;
user-select: all;
}
input {

View file

@ -112,14 +112,15 @@ $session-compose-margin: 20px;
&__user__profile {
&-number,
&-name {
@include fontWasaBold();
font-size: 15px;
@at-root .light-theme #{&} {
color: $session-color-white;
}
@at-root .dark-theme #{&} {
color: $session-shade-17;
}
font-size: 15px;
}
}
}
@ -135,7 +136,7 @@ $session-compose-margin: 20px;
.module-left-pane {
border-right: none !important;
width: 300px;
width: $session-left-pane-width;
position: relative;
height: -webkit-fill-available;
@ -152,7 +153,7 @@ $session-compose-margin: 20px;
&__sections-container {
height: -webkit-fill-available;
width: 80px;
width: $session-left-pane-sections-container-width;
display: inline-flex;
flex-direction: column;
@ -189,6 +190,7 @@ $session-compose-margin: 20px;
.session-button {
margin-left: auto;
@include fontWasaBold();
}
&-buttons {
@ -245,37 +247,34 @@ $session-compose-margin: 20px;
h3 {
padding-top: 22px;
position: relative;
.green-border {
position: absolute;
color: $session-color-green;
background-color: $session-color-green;
height: 5px;
left: -10px;
right: -10px;
margin-top: 7px;
border: none;
z-index: 1;
}
}
h4 {
text-transform: uppercase;
}
&-border-container {
width: -webkit-fill-available;
.white-border {
width: $session-left-pane-width;
position: relative;
height: 1px;
opacity: 0.3;
margin-top: -10px;
margin-bottom: 50px;
.green {
position: absolute;
color: $session-color-green;
background-color: $session-color-green;
height: 6px;
width: 130px;
left: 50%;
margin-left: -65px;
top: 50%;
margin-top: 6px;
border: none;
}
.white {
position: absolute;
color: none;
height: 1px;
width: -webkit-fill-available;
opacity: 0.3;
}
}
.exit {
margin-top: 10px;
margin-left: 13px;
@ -292,24 +291,29 @@ $session-compose-margin: 20px;
}
.session-description-long {
font-size: $session-font-sm;
<<<<<<<headfont-size: $session-font-sm;
line-height: $session-font-h3;
margin: 0px 20px;
=======font-size: 13px;
>>>>>>>9732c4f4d074c1024f308cf7369fc535c26724b4margin: 0px 20px;
font-family: 'SF Pro Display';
}
.session-id-editable textarea::-webkit-inner-spin-button {
margin: 0px 20px;
width: -webkit-fill-available;
flex-shrink: 0;
user-select: all;
overflow: hidden;
resize: none;
.session-id-editable {
textarea::-webkit-inner-spin-button {
margin: 0px 20px;
width: -webkit-fill-available;
flex-shrink: 0;
}
}
.session-id-editable-disabled {
border: none;
}
.session-button {
width: fit-content;
margin-top: auto;
margin-bottom: 16px;
margin-top: 1rem;
margin-bottom: 3rem;
flex-shrink: 0;
}
}
@ -363,7 +367,8 @@ $session-compose-margin: 20px;
height: inherit;
border: none;
flex-grow: 1;
font-size: $session-font-md;
font-size: $session-font-sm;
font-family: 'SF Pro Text';
&:focus {
outline: none !important;
@ -623,5 +628,7 @@ $session-compose-margin: 20px;
background-color: $session-background;
color: $session-color-light-grey;
border: 1px solid $session-color-dark-grey;
font-family: 'SF Pro Text';
font-size: $session-font-sm;
}
}

View file

@ -245,7 +245,7 @@
overflow-wrap: break-word;
padding: 20px 5px 20px 5px;
display: inline-block;
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-family: 'SpaceMono';
user-select: all;
}
}

View file

@ -103,7 +103,7 @@
}
@mixin session-h-title {
font-weight: bold;
@include fontWasaBold();
}
h1 {

View file

@ -1,5 +1,4 @@
// Don't forget to handle the background of the popup windows!
body.dark-theme {
background-color: $color-black;
color: $color-gray-05;
@ -298,12 +297,24 @@ body.dark-theme {
}
}
/* why can't I access $session-color values here? */
.expiredAlert {
background: #f3f3a7;
background: #28f587;
color: black;
/* biggest we can make the font without wrapping the current text at minimum app width */
font-family: 'Wasa';
font-size: 20px;
height: 60px;
span {
line-height: 36px;
}
button {
font-size: 14px;
height: 36px;
color: white;
background: $blue;
background: #474646;
}
}

View file

@ -60,13 +60,6 @@
</div>
</script>
<script type='text/x-tmpl-mustache' id='expired_alert'>
<a target='_blank' href='https://signal.org/download/'>
<button class='upgrade'>{{ upgrade }}</button>
</a>
{{ expiredWarning }}
</script>
<script type='text/x-tmpl-mustache' id='banner'>
<div class='body'>
<span class='icon warning'></span>

View file

@ -207,15 +207,17 @@ export class Avatar extends React.PureComponent<Props, State> {
: this.renderIdenticon();
}
private getBorderStyle(color?: string, width?: number) {
const borderWidth = typeof width === 'number' ? width : 3;
private getBorderStyle(_color?: string, _width?: number) {
//const borderWidth = typeof width === 'number' ? width : 3;
return color
// no border at all for now
return undefined;
/* return color
? {
borderColor: color,
borderStyle: 'solid',
borderWidth: borderWidth,
}
: undefined;
: undefined; */
}
}

View file

@ -38,7 +38,7 @@ export class ContactListItem extends React.Component<Props> {
name={name}
phoneNumber={phoneNumber}
profileName={profileName}
size={48}
size={36}
/>
);
}

View file

@ -254,7 +254,7 @@ We don't want Jumbomoji or links.
conversationType={'direct'}
lastUpdated={Date.now() - 5 * 60 * 1000}
lastMessage={{
text: 'Download at http://signal.org',
text: 'Download at http://getsession.org',
}}
onClick={result => console.log('onClick', result)}
i18n={util.i18n}

View file

@ -85,7 +85,7 @@ export class ConversationListItem extends React.PureComponent<Props> {
if (!(isPendingFriendRequest && !hasSentFriendRequest)) {
borderColor = isOnline ? Colors.ONLINE : Colors.OFFLINE;
}
const iconSize = isPendingFriendRequest && !hasSentFriendRequest ? 28 : 48;
const iconSize = isPendingFriendRequest && !hasSentFriendRequest ? 28 : 36;
return (
<div className="module-conversation-list-item__avatar-container">

View file

@ -113,7 +113,7 @@ export class MessageSearchResult extends React.PureComponent<Props> {
noteToSelf={isNoteToSelf}
phoneNumber={from.phoneNumber}
profileName={from.profileName}
size={48}
size={36}
/>
);
}

View file

@ -286,7 +286,7 @@ export class ConversationHeader extends React.Component<Props> {
>
<SessionIconButton
iconType={SessionIconType.Ellipses}
iconSize={SessionIconSize.Large}
iconSize={SessionIconSize.Medium}
onClick={this.showMenuBound}
/>
</ContextMenuTrigger>

View file

@ -47,7 +47,7 @@ export class EmbeddedContact extends React.Component<Props> {
role="button"
onClick={onClick}
>
{renderAvatar({ contact, i18n, size: 48, direction })}
{renderAvatar({ contact, i18n, size: 36, direction })}
<div className="module-embedded-contact__text-container">
{renderName({ contact, isIncoming, module })}
{renderContactShorthand({ contact, isIncoming, module })}

View file

@ -48,7 +48,7 @@ export class MessageDetail extends React.Component<Props> {
name={name}
phoneNumber={phoneNumber}
profileName={profileName}
size={48}
size={36}
/>
);
}

View file

@ -22,12 +22,12 @@ import { cleanSearchTerm } from '../../util/cleanSearchTerm';
import { SessionSearchInput } from './SessionSearchInput';
import { SessionClosableOverlay } from './SessionClosableOverlay';
import { MainViewController } from '../MainViewController';
import { ContactType } from './SessionMemberListItem'
import { ContactType } from './SessionMemberListItem';
export interface Props {
searchTerm: string;
isSecondaryDevice: boolean;
conversations?: Array<ConversationListItemPropsType>;
searchResults?: SearchResultsProps;
@ -185,14 +185,12 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
}
public render(): JSX.Element {
return (
<div className="session-left-pane-section-content">
{this.renderHeader()}
{this.state.groupAddType
? this.renderClosableOverlay(this.state.groupAddType)
: this.renderGroups()
}
: this.renderGroups()}
</div>
);
}
@ -281,7 +279,7 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
}
private renderClosableOverlay(groupType: SessionGroupType) {
const { searchTerm } = this.props;
const { searchTerm } = this.props;
const { loading } = this.state;
const openGroupElement = (
@ -301,7 +299,7 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
overlayMode={SessionGroupType.Closed}
onChangeSessionID={this.handleOnPasteUrl}
onCloseClick={() => this.handleToggleOverlay(undefined)}
onButtonClick={(groupName: string, groupMembers: Array<ContactType>) =>
onButtonClick={(groupName: string, groupMembers: Array<ContactType>) =>
this.onCreateClosedGroup(groupName, groupMembers)
}
searchTerm={searchTerm}
@ -309,9 +307,12 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
showSpinner={loading}
/>
);
const renderElement = groupType === SessionGroupType.Open ? openGroupElement : closedGroupElement;
const renderElement =
groupType === SessionGroupType.Open
? openGroupElement
: closedGroupElement;
return renderElement;
}
@ -380,31 +381,36 @@ export class LeftPaneChannelSection extends React.Component<Props, State> {
return false;
}
joinChannelStateManager(this, channelUrlPasted, this.handleToggleOverlay(SessionGroupType.Open));
joinChannelStateManager(
this,
channelUrlPasted,
this.handleToggleOverlay(SessionGroupType.Open)
);
return true;
}
private async onCreateClosedGroup(groupName: string, groupMembers: Array<ContactType>) {
private async onCreateClosedGroup(
groupName: string,
groupMembers: Array<ContactType>
) {
// Validate groupName and groupMembers length
if (
groupMembers.length === 0 ||
groupName.length === 0 ||
groupName.length > window.CONSTANTS.MAX_GROUP_NAME_LENGTH
){
groupMembers.length === 0 ||
groupName.length === 0 ||
groupName.length > window.CONSTANTS.MAX_GROUP_NAME_LENGTH
) {
return;
}
await window.doCreateGroup(groupName, groupMembers);
this.handleToggleOverlay(undefined);
window.pushToast({
title: window.i18n('closedGroupCreatedToastTitle'),
type: 'success',
});
return true;
}
}

View file

@ -208,9 +208,12 @@ export class SessionChannelSettings extends React.Component<Props, any> {
{this.renderHeader()}
<h2>{name}</h2>
{showMemberCount && (
<div className="text-subtle">
{window.i18n('members', memberCount)}
</div>
<>
<div className="spacer-lg" />
<div className="text-subtle">
{window.i18n('members', memberCount)}
</div>
</>
)}
<input
className="description"

View file

@ -183,8 +183,7 @@ export class SessionClosableOverlay extends React.Component<Props, State> {
/>
)
}
{showSpinner && <SessionSpinner />}
{isClosedGroupView && (

View file

@ -1,4 +1,5 @@
import React from 'react';
import classNames from 'classnames';
interface Props {
placeholder?: string;
@ -30,7 +31,12 @@ export class SessionIdEditable extends React.PureComponent<Props> {
const { placeholder, editable, text, value, maxLength} = this.props;
return (
<div className="session-id-editable">
<div
className={classNames(
'session-id-editable',
!editable && 'session-id-editable-disabled'
)}
>
<textarea
className="session-id-editable-textarea"
ref={this.inputRef}

View file

@ -261,7 +261,7 @@ function getGotOptions(): GotOptions<null> {
ca,
headers: {
'Cache-Control': 'no-cache',
'User-Agent': 'Signal Desktop (+https://signal.org/download)',
'User-Agent': 'Session Desktop (+https://getsession.org)',
},
useElectronNet: false,
};