1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
Commit Graph

4163 Commits

Author SHA1 Message Date
Anthony Bilinski
a96deb7bc0
refactor(settings): Remove unused Settings::getFriendAddress 2022-03-07 16:40:30 -08:00
Anthony Bilinski
4580d3f106
fix(core): One time reset of user bootstrap node list to default
Due to poor design, bootstrapNodes.json was saved the same if manually set by
user, or if just storing qTox defaults. Because of this, for users using
defaults, they would be stuck with stale defaults indefinitely without this one
time reset.

The user list that's removed is backed up to bootstrapNodes.backup.json.

Going forward, the user list and default list will be stored separately.

Fix #6452
2022-03-06 06:00:13 -08:00
Anthony Bilinski
08fdd3a2c7
feat(core): Store default bootstrap list separate from user list
Allows qTox to tell the difference between a default list that should be
upgraded when defaults are changed, ora user list that should never be changed.
2022-03-06 06:00:13 -08:00
Anthony Bilinski
2b41a06b55
feat(Settings): Add system for versioning and upgrading Settings
Similar to how History handles SCHEMA_VERSION. Run separately on global and
personal settings, since some state in global, and personal settings can’t be
done globally since they require the passkey.

Restrict a user from downgrading past the saved settings version, due to
possible compatibility breaks or old qTox versions re-introducing corrupt state
that was already healed.

Pass in new profile state for personal settings rather than relying on settings
file presence because personal settings can be stored in either the personal
settings file or global settings file. This was introduced in
aea9eea8a4 when personal settings were first
moved to their own file.
2022-03-06 06:00:13 -08:00
Anthony Bilinski
7a3474bf55
feat(chatlog): Add support for ed2k file links 2022-03-05 01:00:08 -08:00
Anthony Bilinski
e426994e5f
test: Fix issues with core_online_test
* Move static function variables from core to be class member variables,
  allowing two Core instances to run at once
* Replace deprecated QLatin1Literal with QLatin1String
* qvariant_cast slot argument to ToxPk, rather than trying to convert variant
  to bytes directly which is invalid
* Fix "wait for both to come online" accidentally waiting for Bob twice
* Move all sleeps to QTRY_VERIFY_WITH_TIMEOUT to speed up test
* Update settings* -> settings& based on Core API change
* Update Mock to match API change of IBootstrapListGenerator
* Register metatype of ToxPk, uint32_t, Status::Status
* Correct Alice's spy looking for Bob's pk
2022-03-02 23:30:04 -08:00
Devan Carpenter
355dfb7a7f feat(chatlog): Add gemini:// to hyperlink regex 2022-03-02 20:19:42 +00:00
Anthony Bilinski
aeb8a9aca1
refactor(bootstrap): Use std::shuffle instead of custom not fully random logic
Simplifies logic and naming.
2022-02-24 16:28:59 -08:00
Anthony Bilinski
0cb222c056
feat(i18n): Handle English plural forms in translations
Special case that only needs plurals translated.
2022-02-23 21:12:16 -08:00
Anthony Bilinski
0df98ce64f
fix(group): Change join leave message setting default to false
Matches the similar status change notification for 1:1 chats, and was the
original plan for this feature.
2022-02-23 04:48:19 -08:00
Anthony Bilinski
6f9123705a
fix(core): Fix logic error retrieving TCP port
Introduced in e7e30ada8c
2022-02-21 05:19:03 -08:00
Anthony Bilinski
7aa8d7178e
refactor(bootstrap): Store public key as ToxPk rather than QString 2022-02-21 02:51:41 -08:00
Anthony Bilinski
e7e30ada8c
fix(core): Use node's TCP ports when connecting to TCP relay
Allows connecting to TCP relays that aren't acting as bootstrap nodes, and
connecting to TCP relays that have different or additional TCP ports compared
to UDP ports.
2022-02-21 02:51:34 -08:00
Anthony Bilinski
3d36cf47e8
refactor(bootstrap): Rename UDP port from port to udpPort 2022-02-21 02:49:23 -08:00
Anthony Bilinski
de924cfdc7
feat(chatlog): Disable join and leave system messages based on setting 2022-02-20 18:15:00 -08:00
Anthony Bilinski
069ab92fd0
feat(UI): Add UI For controlling group join and leave system messages setting 2022-02-20 18:14:55 -08:00
Anthony Bilinski
1be5b99d17
feat(Settings): Add setting for hiding group join and leave system messages
Messages can become spammy is long lasting quiet groups, drowning out real user
messages
2022-02-20 17:32:23 -08:00
Anthony Bilinski
e5df648e1a
refactor(settings): Use IGroupSettings in GroupChatForm
Move interface signals from Settings to be declared by the interface itself
2022-02-20 17:32:23 -08:00
Anthony Bilinski
0adf4a00f3
refactor(chatform): Remove useless static cast 2022-02-20 17:32:23 -08:00
Anthony Bilinski
18643da271
refactor(chatform): Pass Settings to GroupChatForm instead of calling getInstance()
One small step away from propagating singleton use
2022-02-20 17:32:22 -08:00
Anthony Bilinski
3180d23ee2
fix(core): Don't apply Windows file transfer rename on other platforms
Filename cleaning was originally introduced for Windows
https://github.com/qTox/qTox/issues/1304. It's unneeded on other platforms, so
leave file names as they're sent there.

Fix #5242
2022-02-20 17:14:10 -08:00
Anthony Bilinski
9ac44ee09c
fix(history): Replace invalid Tox ID saved in peers table with Tox public key
Due to an old bug that has since be fixed, old history dbs can contain both a
Tox ID version and Tox public key version of the same friend, and always
themselves. They could have n more duplicates if they've updated their nospam.

Tox ID is an invalid length to be stored in strongly typed ToxPk, and in
general having multiple entries belonging to the same user effectively violates
our UNIQUE constraint on public_key.

Introduced in 7168d2b858

Fix #6485
2022-02-20 14:27:33 -08:00
Anthony Bilinski
56eed63fde
fix(core): Fix missed ToxId to ToxPk constructions 2022-02-19 05:37:01 -08:00
Anthony Bilinski
ddebf6ee7a
fix(crash): Handle nightly tag name in update check
We didn't use to have a nightly tag, so git describe would include the
verison of the last release even for nightly or dev builds. Now that the
nightly tag exists, which is required for github release craeation, it
breaks out git describe parsing, and there's no way for us to tell if a
user is behind the next release or not.

Instead just don't check update status if the user isn't on a release
tagged version.
2022-02-19 03:28:21 -08:00
Anthony Bilinski
4b3f50a0c0
chore(l10n): Fix ordering of languages in code 2022-02-19 03:26:11 -08:00
Anthony Bilinski
188fe340f2
feat(l10n): Add Urdu and Icelandic translations 2022-02-19 03:26:11 -08:00
Anthony Bilinski
a1ebf297d3
chore(cleanup): Minor cleanup to contact management test
* Fix compile error on macOS by marking GroupWidget::widgetIsVisible as
override
* Mark mock functions override for consistency
* Change QWARN to QVERIFY since logs will be missed in CI
* Uncomment add of offline and online friends in testSortByActivity
* Add out-of-line method definition to anchor vtable
2022-02-17 17:17:48 -08:00
bodwok
0a9e121811
test(FriendListManager): add contact management test 2022-02-17 13:20:58 -08:00
Anthony Bilinski
d1c86ffff9
refactor(ToxPk): Remove ability to construct ToxId from ToxPk
Construct ToxPk directly everywhere that used to construct through ToxId.

Now any ToxId should be a valid ToxId, and not possibly just a ToxPk.
2022-02-17 07:20:21 -08:00
Anthony Bilinski
3ac37a5496
fix(core): Track avatar offer file size to avoid cancelling transfers
When ToxFile is constructed with a file size of 0, it cancels the transfer as
soon as the first chunk is received due to the received size being
larger than expected.
2022-02-17 06:20:54 -08:00
Anthony Bilinski
a828b54be4
refactor(Paths): Remove portable state from Settings
It now duplicates the state in Paths where it is needed, creating the
chance for desync
2022-02-16 20:15:50 -08:00
Anthony Bilinski
557af80428
refactor(Paths): Remove Paths factory to enable copy construction
std::atomic disallows copy construction and the default constructor disables
the parameterized constructor.

Additionally the case where paths aren't writable isn't handled and would just
segfault in Settings previously, so no safety is lost.
2022-02-16 20:15:46 -08:00
Anthony Bilinski
0eb56fb9bb
fix(Paths): Track portable state in Paths to updates paths correctly
Paths must be aware of the "makeToxPortable" state to so that on shutdown,
saving saves to the new location.

This reverts to old behaviour which was broken in
5d56a3c039

Fix #6443
2022-02-16 19:48:11 -08:00
Anthony Bilinski
d0c120e0a8
fix(Paths): Default to auto paths detection mode
So that settings can be found in either the portable or system wide location.
2022-02-16 19:48:11 -08:00
Anthony Bilinski
15673a52b6
fix(macOS): Update video API usage for newer libavcodec
Newer version of avformat_open_input, av_find_input_format,
avcodec_find_decoder previously used non-const pointers that are now
const. Support both version for compatibiltiy with other platforms.
2022-02-16 18:04:57 -08:00
Anthony Bilinski
cea54c17c9
Merge pull request #6386
Mick Sayson (3):
      fix(filetransfer): Fix UI inconsistencies with pause/resume
      refactor(filetransfer): Move file transfer progress into ToxFile
      feat(filesform): Add in progress transfers to files form
2021-12-20 05:55:52 -08:00
Mick Sayson
257a19caaa feat(filesform): Add in progress transfers to files form
As part of #1532 it was identified that long running file transfers
could get lost deep in the chatlog. This could result in unexpected use
of bandwidth over time if users lose track of old/large transfers. This
commit updates the files form to show in progress file transfers and
offer a way to control them.

* FilesForm now works on ToxFiles instead of finished file paths
* FilesForm widgets have been replaced with an MV tree view with depth
  1. The existing QListWidget did not provide us the controls to render
  more complex items. The use of delegates allows us to efficiently draw
  progress bars and controls
* getHumanReadableSize has been extracted from FileTransferWidget into a
  more general utils file
2021-12-11 15:38:35 -08:00
Mick Sayson
c7efe320d2 refactor(filetransfer): Move file transfer progress into ToxFile
* Refactor/test ToxFileProgress to ensure that when it's moved it
  behaves well
* Notice problems with speed averaging. We were average speeds without
  keeping track of the times they were over. Adding samples of different
  lengths would result in incorrect speeds. Refactor whole class to correct
* Move ToxFileProgress to be a member of ToxFile
* Remove duplicated members between ToxFile and ToxFileProgress
* Move sample addition into CoreFile
2021-12-11 15:38:35 -08:00
Mick Sayson
3bc4aa52be fix(filetransfer): Fix UI inconsistencies with pause/resume 2021-12-11 13:56:08 -08:00
Maxim Biro
560751db88
chore(windows): update SQLCipher to 4.5.0 2021-12-07 04:56:17 -05:00
sudden6
3c58b992c6
perf: reduce repainting in animations
By profiling qTox using perf I discovered, that
NotificationIcon::updateGradient takes significant amount of CPU time
even though qTox is idle and no one is typing.

This commit fixes:

1) correctly determine visibility of NotificationIcon
2) only invalidate boundingRect in fixed intervals
3) apply the same fixes to Spinner since it has the same problem
2021-11-28 12:45:14 +01:00
Anthony Bilinski
54a2b8970b
chore(review): Copyright notice cleanup 2021-11-21 16:19:22 -08:00
Mick Sayson
ffef0e3796
refactor(chatlog): Rename ChatLog -> ChatWidget
* Makes the distinction between IChatLog (the model class) and
  ChatWidget (the view class) more clear
2021-11-21 16:18:45 -08:00
Mick Sayson
3757f733cc
refactor(chatlog): Remove unused getRow functions from ChatLine
* The getRow functions would not track correctly since the rows indexes
  cannot be fixed to the view anymore
2021-11-21 16:18:44 -08:00
Mick Sayson
b36a38e716
feat(chatlog): Re-implement sliding window ChatLog view
* Replace lines/messages with helper class to synchronize state between
  IChatLog and ChatLog more easily
* selection indexes have been replaced with ChatLine::Ptrs, this is to
  ensure consistency while the view slides around
    * This has another benefit of removing all the code that has to
      manually slide the selection boxes around
* Replaced all insertion/removal functions with single "insertAtIdx".
  This helps ensure that mappings between ChatLogIdx and position within
  the view are captured correctly as items in the view slide around
* workerTimeout replaced with more generic name "renderFinished" that is
  used in synchronous and asynchronous paths
* Removed unused function ChatForm::insertChatMessage
* Re-implemented "Go to current date" with new ChatLog APIs
* Removed unused GenericChatForm::addSystemDateMessage. This is handled
  by ChatLog now
* Resolves #6223
* Resolves #5878
* Resolves #5940
2021-11-21 16:18:44 -08:00
Mick Sayson
a9f7c0ca7e
refactor(chatlog): Store ChatLine::Ptr in messages instead of ChatMessage
* This simplifies future refactoring since the rest of ChatLog expects
  to be working with the base class
2021-11-21 16:18:40 -08:00
Mick Sayson
b7a88cde6e
refactor(chatlog): Move rendering of messages from GenericChatForm -> ChatLog
* Simplifies reasoning about who owns what functionality between
  GenericChatForm and ChatLog. GenericChatForm is now just a layout
  class and ChatLog handles all interactions with retrieving and
  displaying messages from the model
* Reasoning for work is described in more detail in #6223
2021-11-21 16:18:32 -08:00
Mick Sayson
dd7df35720
revert(chatlog): Revert cleanup
* Fix compilation issues caused by incorrect merges
2021-11-21 16:17:35 -08:00
Mick Sayson
00ab89c3ce
revert(chatlog): "feat: load messages from the database before date"
This reverts commit fb2957c5ee.
2021-11-21 16:17:35 -08:00
Anthony Bilinski
041b697e77
revert(chatlog): "load messages from the database after date"
This reverts commit b705ac8060.
2021-11-21 16:17:35 -08:00