Permalink
Browse files

Merge branch 'e2ee'

- Support for e2ee rooms
- Implement categories & file logging
- Let the user know when the app can't reach the server (#93)

fixes #13
fixes #326
  • Loading branch information...
mujx committed Jun 17, 2018
2 parents cce85f3 + 9884e02 commit 8704265978572e60f8b04d89cec2f404f5ea4113
Showing with 3,760 additions and 2,665 deletions.
  1. +37 −0 .ci/bintray-release.json
  2. +5 −2 .ci/install.sh
  3. +9 −5 .ci/linux/deploy.sh
  4. +4 −0 .ci/macos/deploy.sh
  5. +9 −1 .ci/script.sh
  6. +1 −0 .gitignore
  7. +17 −19 .travis.yml
  8. +39 −23 CMakeLists.txt
  9. +21 −4 Makefile
  10. +32 −18 README.md
  11. +37 −15 appveyor.yml
  12. +0 −26 cmake/CompilerFlags.cmake
  13. +0 −33 cmake/MatrixStructs.cmake
  14. +82 −0 deps/CMakeLists.txt
  15. +23 −0 deps/cmake/Boost.cmake
  16. +31 −0 deps/cmake/MatrixClient.cmake
  17. +25 −0 deps/cmake/MatrixStructs.cmake
  18. +34 −0 deps/cmake/Olm.cmake
  19. +107 −0 deps/cmake/OlmCMakeLists.txt
  20. +11 −0 deps/cmake/OlmConfig.cmake.in
  21. +22 −0 deps/cmake/SpdLog.cmake
  22. +10 −8 include/AvatarProvider.h
  23. +148 −2 include/Cache.h
  24. +61 −13 include/ChatPage.h
  25. +2 −0 include/CommunitiesList.h
  26. +21 −0 include/Logging.hpp
  27. +29 −4 include/LoginPage.h
  28. +1 −1 include/MainWindow.h
  29. +16 −275 include/MatrixClient.h
  30. +78 −0 include/Olm.hpp
  31. +5 −0 include/RegisterPage.h
  32. +2 −0 include/RoomList.h
  33. +10 −0 include/TextInputWidget.h
  34. +1 −1 include/dialogs/ReCaptcha.hpp
  35. +16 −8 include/dialogs/RoomSettings.hpp
  36. +10 −5 include/timeline/TimelineItem.h
  37. +86 −35 include/timeline/TimelineView.h
  38. +2 −4 include/timeline/TimelineViewManager.h
  39. +6 −1 include/timeline/widgets/AudioItem.h
  40. +6 −1 include/timeline/widgets/FileItem.h
  41. +8 −2 include/timeline/widgets/ImageItem.h
  42. +28 −22 src/AvatarProvider.cc
  43. +404 −63 src/Cache.cc
  44. +732 −294 src/ChatPage.cc
  45. +50 −14 src/CommunitiesList.cc
  46. +59 −0 src/Logging.cpp
  47. +54 −15 src/LoginPage.cc
  48. +29 −20 src/MainWindow.cc
  49. +19 −1,349 src/MatrixClient.cc
  50. +228 −0 src/Olm.cpp
  51. +97 −33 src/RegisterPage.cc
  52. +34 −20 src/RoomList.cc
  53. +0 −2 src/TextInputWidget.cc
  54. +8 −7 src/dialogs/PreviewUploadOverlay.cc
  55. +8 −7 src/dialogs/ReCaptcha.cpp
  56. +137 −48 src/dialogs/RoomSettings.cpp
  57. +32 −25 src/main.cc
  58. +37 −1 src/timeline/TimelineItem.cc
  59. +593 −76 src/timeline/TimelineView.cc
  60. +13 −40 src/timeline/TimelineViewManager.cc
  61. +18 −21 src/timeline/widgets/AudioItem.cc
  62. +28 −23 src/timeline/widgets/FileItem.cc
  63. +80 −70 src/timeline/widgets/ImageItem.cc
  64. +8 −9 src/timeline/widgets/VideoItem.cc
View
@@ -0,0 +1,37 @@
+{
+ "files": [
+ {
+ "includePattern": "nheko-VERSION_NAME_VALUE.dmg",
+ "matrixParams": {
+ "override": 1
+ },
+ "uploadPattern": "VERSION_NAME_VALUE/nheko-VERSION_NAME_VALUE.dmg"
+ },
+ {
+ "includePattern": "nheko-VERSION_NAME_VALUE-x86_64.AppImage",
+ "matrixParams": {
+ "override": 1
+ },
+ "uploadPattern": "VERSION_NAME_VALUE/nheko-VERSION_NAME_VALUE-x86_64.AppImage"
+ }
+ ],
+ "package": {
+ "desc": "Desktop client for the Matrix protocol",
+ "issue_tracker_url": "https://github.com/mujx/nheko/issues",
+ "licenses": [
+ "GPL-3.0"
+ ],
+ "name": "nheko",
+ "public_download_numbers": true,
+ "public_stats": true,
+ "repo": "matrix",
+ "subject": "mujx",
+ "vcs_url": "https://github.com/mujx/nheko",
+ "website_url": "https://github.com/mujx/nheko"
+ },
+ "publish": true,
+ "version": {
+ "name": "VERSION_NAME_VALUE",
+ "vcs_tag": "VERSION_NAME_VALUE"
+ }
+}
View
@@ -4,7 +4,8 @@ set -ex
if [ $TRAVIS_OS_NAME == osx ]; then
brew update
- brew install qt5 lmdb clang-format ninja
+ brew install qt5 lmdb clang-format ninja libsodium spdlog
+ brew upgrade boost
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
@@ -23,6 +24,7 @@ if [ $TRAVIS_OS_NAME == linux ]; then
QT_PKG="59"
fi
+ sudo add-apt-repository -y ppa:chris-lea/libsodium
sudo add-apt-repository -y ppa:beineri/opt-qt${QT_VERSION}-trusty
sudo add-apt-repository -y ppa:george-edison55/cmake-3.x
sudo apt-get update -qq
@@ -32,5 +34,6 @@ if [ $TRAVIS_OS_NAME == linux ]; then
qt${QT_PKG}svg \
qt${QT_PKG}multimedia \
cmake \
- liblmdb-dev
+ liblmdb-dev \
+ libsodium-dev
fi
View
@@ -7,7 +7,7 @@ DIR=${APP}.AppDir
TAG=`git tag -l --points-at HEAD`
# Set up AppImage structure.
-mkdir -p ${DIR}/usr/{bin,share/pixmaps,share/applications}
+mkdir -p ${DIR}/usr/{bin,lib,share/pixmaps,share/applications}
# Copy resources.
cp build/nheko ${DIR}/usr/bin
@@ -30,9 +30,13 @@ unset QTDIR
unset QT_PLUGIN_PATH
unset LD_LIBRARY_PATH
-./linuxdeployqt*.AppImage \
- ${DIR}/usr/share/applications/nheko.desktop \
- -bundle-non-qt-libs\
- -appimage
+export ARCH=$(uname -m)
+
+./linuxdeployqt*.AppImage ${DIR}/usr/share/applications/*.desktop -bundle-non-qt-libs
+./linuxdeployqt*.AppImage ${DIR}/usr/share/applications/*.desktop -appimage
chmod +x nheko-x86_64.AppImage
+
+if [ ! -z $TRAVIS_TAG ]; then
+ mv nheko-x86_64.AppImage nheko-${TRAVIS_TAG}-x86_64.AppImage
+fi
View
@@ -15,3 +15,7 @@ mv nheko.dmg ..
popd
dmgbuild -s ./.ci/macos/settings.json "Nheko" nheko.dmg
+
+if [ ! -z $TRAVIS_TAG ]; then
+ mv nheko.dmg nheko-${TRAVIS_TAG}.dmg
+fi
View
@@ -10,7 +10,15 @@ if [ $TRAVIS_OS_NAME == osx ]; then
export CMAKE_PREFIX_PATH=/usr/local/opt/qt5
fi
-make ci
+# Build & install dependencies
+cmake -Hdeps -B.deps \
+ -DUSE_BUNDLED_BOOST=${USE_BUNDLED_BOOST} \
+ -DUSE_BUNDLED_SPDLOG=${USE_BUNDLED_SPDLOG}
+cmake --build .deps
+
+# Build nheko
+cmake -GNinja -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
+cmake --build build
if [ $TRAVIS_OS_NAME == osx ]; then
make lint;
View
@@ -99,3 +99,4 @@ package.dir
# Dependencies
.third-party
+.deps
View
@@ -14,6 +14,8 @@ matrix:
compiler: clang
env:
- DEPLOYMENT=1
+ - USE_BUNDLED_BOOST=0
+ - USE_BUNDLED_SPDLOG=0
- os: linux
compiler: gcc
env:
@@ -22,6 +24,8 @@ matrix:
- QT_VERSION="-5.10.1"
- QT_PKG=510
- DEPLOYMENT=1
+ - USE_BUNDLED_BOOST=1
+ - USE_BUNDLED_SPDLOG=1
addons:
apt:
sources: ["ubuntu-toolchain-r-test"]
@@ -33,6 +37,8 @@ matrix:
- C_COMPILER=gcc-7
- QT_VERSION=571
- QT_PKG=57
+ - USE_BUNDLED_BOOST=1
+ - USE_BUNDLED_SPDLOG=1
addons:
apt:
sources: ["ubuntu-toolchain-r-test"]
@@ -44,6 +50,8 @@ matrix:
- C_COMPILER=clang-5.0
- QT_VERSION=592
- QT_PKG=59
+ - USE_BUNDLED_BOOST=1
+ - USE_BUNDLED_SPDLOG=1
addons:
apt:
sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-5.0"]
@@ -58,28 +66,18 @@ install:
script:
- ./.ci/script.sh
+ - sed -i -e "s/VERSION_NAME_VALUE/${TRAVIS_TAG}/g" ./.ci/bintray-release.json || true
+ - cp ./.ci/bintray-release.json .
deploy:
- - skip_cleanup: true
+ - provider: bintray
+ user: "mujx"
+ key:
+ secure: "CAVzWZPxYSOTollo9bpD4tvEbfxXjqelc32aApV48GKyJrMQljQ+mvSe25BuUtnDehxnw8affgGX23AYXmvG8P7w4hM2d7//8Lgan1zCmusV8JE432jknev6X641B4cvrywqSe0Dj3l0kS9Xgirq4BGavlI0y2vUjeJfQEv0y8GYoI72LwgyH0i82v/1Qi92Fh8429IJIb0eKmC1wGWXCmo2kd8StZRL5mSlc4TmyWI0SHpA5GrLMiQwLAuD7DjDl5mpaK2yQx+H4vBcI2SUMvmlHGgVjXikJG5gURlHbnIaaBFvO67INc1/65KtMokWuMP12zxqJiaMPtsAskOpQv4FLAYDfnigH3NxufyOIGp2cxS5RhJDQhbNsxHEDnUo1kHcO23ZYNWCuC1yUdn0RXzKhWcUsz8mKF8KJs22Ty4VjfUMZ+vqK/AbHyq4rkl8DizVRZqKF1KjSWrSv/2sT4itnHk9pmcgxAYfGuALcjrJJveI4MTwDhzXB62CKnMOqLq3sAMqvE0+BdA0BykQr7qrKtptuyP2/OFx6RDbfHQl5Klkb6cSOjxm0oUzh/8iaxgsVdCrhfE67eqkhFZ+a8lJkB/rZ4zSK1Q2Cp4nLtnxenUCW+Ptk2l7zZN6kXM1/+tcgqVROChYJ6asMUpsjFOOAVQ8SZ4TcxX1rq+pxlA="
+ skip_cleanup: true
overwrite: true
- provider: releases
- api_key:
- secure: oprXzESukFiXBeF2BXkXUlegsAQc95Ub4kc/OkoNFaYBvqpA+IGpWHmHCx5JPny/OT3Kc2Urpe2JUeGSWDHZ7UCKDjH+NzGP3uN82fHh/HiszG/Srw7+hWEHm1ve+gMK9GS8pr+yUsUrPP0UfVXlPoI4pBWa4zGi2Ndb/SqvjCgIHFLtGyoBo6CydKQ/AyWiXSMKDfJL+Dx4JLIPP4RTCBJy8ZrZ8m/a5Tgy4Ij6+djjrgYCZCEhGxSYw7xDIT/9SV8g9NkrbisqBDrILzAH8Yhe4XMRMXo88OAxV5+Vb9Rw1hrqczez6lpFDbJetv8MjofND+pSoAFwtjaL1wTFK9Ud6w4O9AuHlEQH9cGVdvsxFcosRwJVh58x51JM9ptoktqhx/HHJBTuCHCYYlHwtRwbwqnMYdLzKZG5FnujT8DG+9mcva1fL6tzW/XD505VPMWwXFC/2/pvolgAkTFFXYSALAwZlK3IgoXU8Gok/3B4iHofzQsFf6Yq3BI/88x7tVASUqiYhoKrO50+gb6pNIRCyWgGUiBEVXBp6Ziq3ORQPyQJg7i9HHUGTUu74yvGLHWLwjNQzZP/hxJZK3VlJxzyXntdOxiJc8iOzNrU+rPKBAlAaE6bQDOoniIysEgdD5BXHTLFzPvts4P1n2Ckor5/rNJ+qXR8GU+/y7e1GKU=
- file_glob: true
- file:
- - nheko-x86_64.AppImage
+ file: "bintray-release.json"
on:
- condition: $TRAVIS_OS_NAME == linux && $DEPLOYMENT == 1
- repo: mujx/nheko
- tags: true
-
- - skip_cleanup: true
- overwrite: true
- provider: releases
- api_key:
- secure: oprXzESukFiXBeF2BXkXUlegsAQc95Ub4kc/OkoNFaYBvqpA+IGpWHmHCx5JPny/OT3Kc2Urpe2JUeGSWDHZ7UCKDjH+NzGP3uN82fHh/HiszG/Srw7+hWEHm1ve+gMK9GS8pr+yUsUrPP0UfVXlPoI4pBWa4zGi2Ndb/SqvjCgIHFLtGyoBo6CydKQ/AyWiXSMKDfJL+Dx4JLIPP4RTCBJy8ZrZ8m/a5Tgy4Ij6+djjrgYCZCEhGxSYw7xDIT/9SV8g9NkrbisqBDrILzAH8Yhe4XMRMXo88OAxV5+Vb9Rw1hrqczez6lpFDbJetv8MjofND+pSoAFwtjaL1wTFK9Ud6w4O9AuHlEQH9cGVdvsxFcosRwJVh58x51JM9ptoktqhx/HHJBTuCHCYYlHwtRwbwqnMYdLzKZG5FnujT8DG+9mcva1fL6tzW/XD505VPMWwXFC/2/pvolgAkTFFXYSALAwZlK3IgoXU8Gok/3B4iHofzQsFf6Yq3BI/88x7tVASUqiYhoKrO50+gb6pNIRCyWgGUiBEVXBp6Ziq3ORQPyQJg7i9HHUGTUu74yvGLHWLwjNQzZP/hxJZK3VlJxzyXntdOxiJc8iOzNrU+rPKBAlAaE6bQDOoniIysEgdD5BXHTLFzPvts4P1n2Ckor5/rNJ+qXR8GU+/y7e1GKU=
- file: nheko.dmg
- on:
- condition: $TRAVIS_OS_NAME == osx && $DEPLOYMENT == 1
+ condition: $DEPLOYMENT == 1
repo: mujx/nheko
tags: true
View
@@ -29,6 +29,15 @@ set(IDENTIFIER "com.github.mujx.nheko")
add_project_meta(META_FILES_TO_INCLUDE)
+if(APPLE)
+ set(OPENSSL_ROOT_DIR /usr/local/opt/openssl)
+endif()
+
+if(NOT MSVC AND NOT APPLE)
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_package(Threads REQUIRED)
+endif()
+
#
# LMDB
#
@@ -37,7 +46,7 @@ include(LMDB)
#
# Discover Qt dependencies.
#
-find_package(Qt5 COMPONENTS Core Widgets Network LinguistTools Concurrent Svg Multimedia REQUIRED)
+find_package(Qt5 COMPONENTS Core Widgets LinguistTools Concurrent Svg Multimedia REQUIRED)
if (APPLE)
find_package(Qt5MacExtras REQUIRED)
@@ -60,7 +69,20 @@ endif(NOT MSVC)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-include(CompilerFlags)
+if(NOT MSVC)
+ set(
+ CMAKE_CXX_FLAGS
+ "${CMAKE_CXX_FLAGS} \
+ -Wall \
+ -Wextra \
+ -Werror \
+ -pipe \
+ -pedantic \
+ -fsized-deallocation \
+ -fdiagnostics-color=always \
+ -Wunreachable-code"
+ )
+endif()
if(NOT (CMAKE_BUILD_TYPE OR CMAKE_CONFIGURATION_TYPES))
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
@@ -151,9 +173,11 @@ set(SRC_FILES
src/Community.cc
src/InviteeItem.cc
src/LoginPage.cc
+ src/Logging.cpp
src/MainWindow.cc
src/MatrixClient.cc
src/QuickSwitcher.cc
+ src/Olm.cpp
src/RegisterPage.cc
src/RoomInfoListItem.cc
src/RoomList.cc
@@ -175,20 +199,12 @@ set(SRC_FILES
# ExternalProject dependencies
set(EXTERNAL_PROJECT_DEPS "")
-#
-# matrix-structs
-#
-find_library(MATRIX_STRUCTS_LIBRARY
- NAMES matrix_structs
- PATHS ${MATRIX_STRUCTS_ROOT}
- ${MATRIX_STRUCTS_ROOT}/lib
- ${MATRIX_STRUCTS_ROOT}/lib/static)
-
-if(NOT MATRIX_STRUCTS_LIBRARY)
- include(MatrixStructs)
- set(EXTERNAL_PROJECT_DEPS ${EXTERNAL_PROJECT_DEPS} MatrixStructs)
-endif()
-include_directories(SYSTEM ${MATRIX_STRUCTS_INCLUDE_DIR})
+find_package(ZLIB REQUIRED)
+find_package(OpenSSL REQUIRED)
+find_package(MatrixStructs 0.1.0 REQUIRED)
+find_package(MatrixClient 0.1.0 REQUIRED)
+find_package(Olm 2 REQUIRED)
+find_package(spdlog 0.16.0 CONFIG REQUIRED)
#
# tweeny
@@ -267,7 +283,6 @@ qt5_wrap_cpp(MOC_HEADERS
include/LoginPage.h
include/MainWindow.h
include/InviteeItem.h
- include/MatrixClient.h
include/QuickSwitcher.h
include/RegisterPage.h
include/RoomInfoListItem.h
@@ -291,11 +306,12 @@ include(Translations)
set(TRANSLATION_DEPS ${LANG_QRC} ${QRC} ${QM_SRC})
set(COMMON_LIBS
- ${MATRIX_STRUCTS_LIBRARY}
+ MatrixStructs::MatrixStructs
+ MatrixClient::MatrixClient
Qt5::Widgets
- Qt5::Network
Qt5::Svg
- Qt5::Concurrent)
+ Qt5::Concurrent
+ Qt5::Multimedia)
if(APPVEYOR_BUILD)
set(NHEKO_LIBS ${COMMON_LIBS} lmdb)
@@ -325,13 +341,13 @@ endif()
if(APPLE)
add_executable (nheko ${OS_BUNDLE} ${NHEKO_DEPS})
- target_link_libraries (nheko ${NHEKO_LIBS} Qt5::MacExtras Qt5::Multimedia)
+ target_link_libraries (nheko ${NHEKO_LIBS} Qt5::MacExtras)
elseif(WIN32)
add_executable (nheko ${OS_BUNDLE} ${ICON_FILE} ${NHEKO_DEPS})
- target_link_libraries (nheko ${NTDLIB} ${NHEKO_LIBS} Qt5::WinMain Qt5::Multimedia)
+ target_link_libraries (nheko ${NTDLIB} ${NHEKO_LIBS} Qt5::WinMain)
else()
add_executable (nheko ${OS_BUNDLE} ${NHEKO_DEPS})
- target_link_libraries (nheko ${NHEKO_LIBS} Qt5::Multimedia)
+ target_link_libraries (nheko ${NHEKO_LIBS})
endif()
if(EXTERNAL_PROJECT_DEPS)
View
@@ -1,14 +1,31 @@
+DEPS_BUILD_DIR=.deps
+DEPS_SOURCE_DIR=deps
debug:
- @cmake -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1
+ @cmake -H. -GNinja \
+ -Bbuild \
+ -DCMAKE_BUILD_TYPE=Debug \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS=1 \
+ -DCMAKE_INSTALL_PREFIX=${DEPS_BUILD_DIR}/usr
@cmake --build build
+third-party:
+ @cmake -GNinja -H${DEPS_SOURCE_DIR} -B${DEPS_BUILD_DIR} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DUSE_BUNDLED_BOOST=OFF
+ @cmake --build ${DEPS_BUILD_DIR}
+
ci:
- @cmake -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
- @cmake --build build
+ cmake -H${DEPS_SOURCE_DIR} -B${DEPS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release
+ cmake --build ${DEPS_BUILD_DIR}
+ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ cmake --build build
release:
- @cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ @cmake -H. -GNinja \
+ -Bbuild \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=${DEPS_BUILD_DIR}/usr
@cmake --build build
linux-install:
Oops, something went wrong.

0 comments on commit 8704265

Please sign in to comment.