Commit Graph

660 Commits

Author SHA1 Message Date
yenda a6616033f4
[refactor] add check in abi-spec decode and expect a hex string
Signed-off-by: yenda <eric@status.im>
2019-03-28 15:38:20 +01:00
Churikova Tetiana 7cb1919f99
make_admin and remove_user group chat tests
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2019-03-26 14:02:23 +01:00
yenda 26b97ddf43
introduce system-tags
Signed-off-by: yenda <eric@status.im>
2019-03-25 16:55:09 +01:00
Anton Danchenko fe76457609
confirm network connect
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-03-22 14:42:19 +02:00
Anton Danchenko 4150fbfe77
new faucet url and locators
Signed-off-by: Serhy <sergii@status.im>
2019-03-22 13:18:55 +02:00
Serhy dd6f659809
Fix e2e tests adding custom network
Signed-off-by: Serhy <sergii@status.im>
2019-03-22 13:17:03 +02:00
Pedro Pombeiro 3af25381e1
Change shebang in bash scripts 2019-03-21 13:57:00 +01:00
yenda 5e7186ed52
[fix 5695] remove close icon in add to contacts bar
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-21 13:44:00 +01:00
Andrea Maria Piana 25ea0192e5
Fix qr code and bootnode
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-21 13:40:45 +01:00
Anton Danchenko cf21763a97
false failures fixes
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-03-21 13:47:20 +02:00
yenda 496f3f1cc7
[design] use Inter font on Android
- implement typography component
- replace InterUI font by Inter font (renaming)

Signed-off-by: yenda <eric@status.im>
2019-03-20 18:42:31 +01:00
Roman Volosovskyi f25cf1a0f9
Reduce overdraw on main tabs
Fix e2e when swip-to-delete item
2019-03-20 14:59:22 +02:00
Anton Danchenko e87d93c820
open dapp fix
Signed-off-by: Serhy <sergii@status.im>
2019-03-20 13:45:10 +02:00
Serhy 10cc181335
Remove Dapps from search on chat test
Signed-off-by: Serhy <sergii@status.im>
2019-03-20 12:20:43 +02:00
Anton Danchenko 3c5502075a
added chat search test
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-03-19 15:02:42 +02:00
Serhy 036692f8ba
Fix autotests for new welcome screen
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-19 13:11:26 +01:00
decanus 8d9664581f
changed translations
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-19 12:57:42 +01:00
Churikova Tetiana f8dfc82dd4
Decline group invites
Signed-off-by: Serhy <sergii@status.im>
2019-03-18 16:59:16 +02:00
Serhy 8e1da91ea0
Update e2e test to scroll more for TestDapp
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-14 11:10:37 +01:00
Serhy ac718de425
Update critical autotests 2019-03-14 09:45:55 +01:00
yenda 7cad165a66
fix missing toolbar separator
Signed-off-by: yenda <eric@status.im>
2019-03-13 17:24:24 +01:00
Anton Danchenko cf0afbca14
removed link to jenkins job in a PR
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-03-12 11:24:21 +02:00
tbenr b1331378d5
fixes #6597
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-03-06 17:09:58 +01:00
Serhy 54a364a78f
Update set of critical tests #7658
Signed-off-by: Serhy <sergii@status.im>
2019-03-06 10:50:46 +02:00
Serhy aa0c457382
Disable wallet modal tests
Signed-off-by: Serhy <sergii@status.im>
2019-03-05 11:19:25 +02:00
Andrea Maria Piana b26b6ee5e0
Add unpinning of mailservers
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-04 14:06:09 +01:00
Serhy a98264014f
Fix switch to home view from Wallet
Signed-off-by: Serhy <sergii@status.im>
2019-03-04 11:33:58 +02:00
Andrey Shovkoplyas c491654eec
[#7262] Remove shortcut creation when following universal links inside status
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-01 17:00:54 +01:00
Andrea Maria Piana edf810444d
Fix concurrent retry-request
Sometimes it happens that the expired signal is received while the
there's a new request in flight.
This happens in cases such as:

1) We send a request (A)
2) We get disconnected from the mailserver
3) We connect to a new mailserver
4) We send a request (B)
5) We receive an expired signal for A

In such cases the request should not be retried or counted as a failure.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-28 15:28:59 +01:00
Serhy 8aaafa3102
Add tests create acc with special chars pass
Signed-off-by: Serhy <sergii@status.im>
2019-02-28 11:07:05 +02:00
yenda 6b6847a1ba
[feature] search chats
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-26 18:01:25 +01:00
Andrea Maria Piana 6a42580fc2
Remove separate topic from group chats
Currently the separate topic was not used, as it's a bit tricky to
coordinate when multiple devices from different versions are present,
with the partitioned topic, probably this optimisation is not necessary
anymore, so removing this for now.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-26 17:18:26 +01:00
Andrea Maria Piana 71654a6829
Confirm pairing messages
Partially addresses https://github.com/status-im/status-react/issues/7513
This commit adds confirmation to pairing messages, which previously were
not confirmed.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-26 17:12:05 +01:00
Andrea Maria Piana 229f5ae108
Dont change mailserver if no network
When we are offline, we don't try to change mailserver, and we don't
show a pop up to the user, as it is not that the mailserver is not
working, we are just offline.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-26 15:32:54 +01:00
Serhy e55f8c95e2
Not expect messages after join gh
Signed-off-by: Serhy <sergii@status.im>
2019-02-22 12:33:49 +02:00
Andrea Maria Piana c9994b5d0f
Dont override last-clock-value on messages
The denormalized-clock-value was erroneously set to the one of the last
message received. This meant that on chats were the clock-value raced
ahead of the timestamp (#status), a message from the mailserver or a
message from someone with an old clock-value would basically make those
messages be sorted in the past.

The correct behavior is that last-clock-value for a given chat should be
the maximum last clock value ever seen for that chat.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-21 13:41:06 +01:00
Roman Volosovskyi b8d4f2911b
new bottom tab (react-navigation) 2019-02-20 19:14:17 +02:00
Serhy 8def565664
Add tests for send tx in Dapp
Signed-off-by: Serhy <sergii@status.im>
2019-02-18 16:23:42 +02:00
Serhy 9a5707583e
Custom network and seen status autotests fix
Signed-off-by: Serhy <sergii@status.im>
2019-02-18 16:21:53 +02:00
Andrea Maria Piana 9c6cce7d4d
Allow to send transactions to non-contacts
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-18 11:33:39 +01:00
Serhy 8812c0f8bc
Selecting users when creating group chat
Signed-off-by: Serhy <sergii@status.im>
2019-02-15 15:21:12 +02:00
Andrea Maria Piana bddae03ab2
Allow multiple push notifications
We keep tokens synchronized across devices, so that the user can notify
us on any paired device.
Currently we record the installation id associated to the fcm-token even
though is not necessary, but it will be once we send device-to-device
messages, in which case we want to notify only those devices.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-14 16:33:50 +01:00
Anton Danchenko fd46113ab3
run all tests on android 8
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-02-13 23:30:14 +02:00
yenda 1002051074
[fix] ios checkbox
- remove usage of native checkboxes on android and desktop to ensure proper
design
- rename plain-checkbox to radio button and make sure it is only used where
radio button should be used (one possible choice beyond many)
- update autotest

Signed-off-by: yenda <eric@status.im>
2019-02-13 16:31:52 +01:00
yenda 77b792a37a
[#6850] related refactoring
- remove unecessary subscriptions related to add-contact-bar

Signed-off-by: yenda <eric@status.im>
2019-02-13 12:38:31 +01:00
Andrea Maria Piana 7960fdef85
Publish contact updates periodically
Currently it's very easy for contact details to get out of sync, the
simplest example is:
A & B are contacts.
A changes name.
B receives the updated name.
B re-install the app.
Until A changes name again, B will not see their name, picture and won't
be able to send push notifications.

This PR changes the behavior to publish account informations to contacts
every 24 hrs, to add some redundancy in this cases.

It also publishes a contact code every 12hrs.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-12 14:20:45 +01:00
Serhy 48affbc918
Fix autotest
Signed-off-by: Serhy <sergii@status.im>
2019-02-11 19:10:36 +02:00
mestorlx 0471d5fd72
Added utility function to test addresses according to EIP55.
Added pop-up message when addres checksum fails in wallet/send/enter recipient address.

Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-02-11 11:06:24 +01:00
kn 6988950ea8
[#6973] Replace react-native-i18n with react-native-languages 2019-02-09 23:27:46 -08:00
Andrea Maria Piana 14e887160a
Dont setup topic as it resets the discovery filter
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-08 10:57:21 +01:00
Andrey Shovkoplyas 4c4fb6bbe9
[#5584] Implement Manage permissions screen and option for web3 provider Opt-in access
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-02-06 10:38:20 +01:00
Dmitry Novotochinov 1b836bf7ec
[#7006] login with keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-02-06 00:20:07 +03:00
yenda b80e02d8cf
[feature] add block user feature in user profile
- add block/unblock action to user profile
- blocking deletes all messages from user and ignores future messages
- unblocking stops ignoring new messages from user but doesn't recover past ones

[feature] add contact list

[tests] added scroll to BackupRecoveryPhraseButton

[tests] added scroll to public key

Signed-off-by: yenda <eric@status.im>
2019-02-05 16:29:56 +01:00
yenda 444c6af319
[refactor] contact model: remove unused fields and add `blocked?`
- dapp related fields are removed since it is not used anymore
- blocked? field is added for futur block user feature
2019-02-05 16:28:50 +01:00
Igor Mandrigin e2f53418f3
Revert "don't auto-generate contact address from whisper pub key"
This reverts commit b3416f5ad5.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-04 16:08:49 +01:00
Andrea Franz b3416f5ad5
don't auto-generate contact address from whisper pub key
Signed-off-by: Andrea Franz <andrea@gravityblast.com>
2019-02-04 13:58:21 +01:00
Roman Volosovskyi fe7c7088db
Use partitioned topic for discovery
Currently we use a single topic for discovery.
This provides the best obscurity at the cost of bandwidth, as a message
sent on the discovery topic will be received by any peer.
This PR changes this behavior and start listening on a partitioned
topic.
Each pk will be hashed to a limited number of topics.

Everytime someone is in a conversation with someone from another topic
they will have to listen as well to avoid loosing obscurity, because we
only forward messages that we also advertise in the bloom filter.

The choice for the number of partitions depends on 2 factors:

1) The expected number of users using the network
2) The average number of contacts each user

Any change to the discovery topic will need to be split across 3
releases, to avoid breaking compatibility:

1) Listen to the new and old topic, publish to the old topic
2) Listen to the new and old topic, publish to the new topic
3) Listen to the new topic, publish to the new topic

This is step 1.
2019-02-01 14:40:54 +02:00
Serhy 305bc8e1cf
Add accessibility-id for create group chat button
Signed-off-by: Serhy <sergii@status.im>
2019-01-31 20:38:15 +02:00
Andrea Maria Piana 89725d693a
Add pairing docs link, disable pfs toggle in release
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-31 07:49:37 +01:00
Anton Danchenko d093b5f6be
fix for 502 response from sauce
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-01-30 15:27:37 +02:00
Andrea Maria Piana 13b04f17eb
Enable pairing & contact recovery
This PR enables pairing outside of dev-mode and contact-recovery, which
is useful in the case a new device is added or re-installed.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-29 18:25:25 +01:00
Andrea Maria Piana 52ae2c2bfe
Style header group-chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-29 10:31:59 +01:00
Roman Volosovskyi 9daef17f11
Stop sending seen messages
Currently, these messages are not used and should be properly revisited
later. It only generates extra traffic on discovery topic.
2019-01-25 09:23:00 +02:00
Pedro Pombeiro d3f1b37c12
Use new status-go and rename NotifyUsers
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-24 15:41:32 +01:00
Andrea Maria Piana 2b2c44c9a5
Add device name to pairing
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-24 11:29:24 +01:00
Julien Eluard a825175aea
Fixed incorrect parameters provided to Command#yield-control
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-01-23 19:35:50 +01:00
Dmitry Novotochinov cee18d23b8
[#7132] add keycard settings
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-01-23 20:11:23 +03:00
Igor Mandrigin 94022523a1
Use new Infura API.
As per announcement, we need to switch our Infura project IDs.

> As previously announced, accessing Infura will begin requiring a Project ID generated from the new Infura Dashboard. If you are using Infura and have not yet migrated your project, please take the time to do so now. The first milestone in this transition will be activated next week on January 23, 2019 at 20:00 UTC.

https://blog.infura.io/infura-dashboard-transition-update-c670945a922a

The new project is created with ID `f315575765b14720b32382a61a89341a`
and the API keys are updated.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-22 12:34:16 +01:00
Anton Danchenko 69209107ca
added upgrade test, changed apk name on sauce
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-01-21 12:52:12 +02:00
Pedro Pombeiro 5a69b4198e
Update PNs to use data-only messaging, and only encode/decode data values. Fixes #6772
Fix navigation to chat when PN is tapped while signed off. Fixes #3488

Anonymize PN pubkeys. Part of #6772
2019-01-17 19:23:55 +02:00
Igor Mandrigin 4af2073388
Revert "Fixed incorrect parameters provided to Command#yield-control"
This reverts commit ac1de8c690.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-17 15:15:43 +01:00
Julien Eluard ac1de8c690
Fixed incorrect parameters provided to Command#yield-control
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-01-17 12:46:27 +01:00
Roman Volosovskyi 664cbf6bbe
Sign-in flow docs and tests 2019-01-15 17:00:58 +02:00
Anton Danchenko 471d26c6d1
fix group chat tests
Signed-off-by: Serhy <sergii@status.im>
2019-01-15 16:01:46 +02:00
Igor Mandrigin e8de37f5ef
Report messages as "processed" to status-go only after they were successfully stored in the DB.
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-14 19:12:26 +01:00
Anton Danchenko df7590f48b
fix group and browser tests
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2019-01-09 17:15:28 +02:00
Andrea Maria Piana b56fd2e29f
Show popup when device is not targeted.
When someone is sending a pfs message to us but did not include our own
device, a pop up is shown propmting the user to connect with the user.

The reason for receiving messages that are not targeting our devices are
various:

1) The account was just recovered (which means it is a new installation
id)
2) More than 3 devices are in use (we only keep max 3 devices in sync)
3) The sender has used an old bundle which does not include the current
device

Eventually we will reduce the likelihood of this scenario happening, but
we can't dismiss it completely.

It's only enabled when PFS is enabled.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-09 09:36:36 +01:00
Igor Mandrigin 744abb3984
Merge pull request #7206 from status-im/pyyaml-vuln-update
upgrade pyyaml to 4.1 for vuln mitigation
2019-01-08 16:38:37 +01:00
Andrea Maria Piana 3e761c3b85
Extend message hash confirmation for group chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-08 13:59:30 +01:00
Andrea Maria Piana e8069f523d
Move group chats to their own topic
This commit moves group chats to their own topic, based on the randomly
generated chat-id. It falls back on the discovery topic for those peers
who we can't fingerprint the version, for backward compatibility.
2019-01-08 13:58:41 +01:00
Andrea Maria Piana 881691fbc3
Add joining of group chats
Members will now have to explicitly join a group chat to start receiving
messages from it.

Messages are still sent to users who have not joined for backward
compatibility.
Group updates are unaffected.
2019-01-08 13:58:40 +01:00
tbenr 469556a04b
Fixes #6594
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-01-07 14:33:38 +01:00
Corey 5e87026576
upgrade pyyaml to 4.1 for vuln mitigation 2019-01-04 13:44:24 -05:00
Vitaliy Vlasov c8e5fd6a9c
Add desktop keyboard shortcuts
Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2019-01-04 00:30:19 +02:00
Anton Danchenko 2e7d89e690
added clicks on allow button
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-01-03 11:20:52 +01:00
Roman Volosovskyi 15747558fa
[#7179] Fix command message preview in the list of chats
The bug was introduced in #7055.

`message-type` was stored and used instead of `content-type` which
caused incorrect displaying of the last message preview if the one was a
command.
2018-12-27 16:35:45 +02:00
Roman Volosovskyi 768da1a5f0
[slow sign in] Fetch generic password only once
Previously it was fetched each time when any realm db was opened,
but it should happen only once. Saves up to 300ms on sign in.
2018-12-27 12:37:29 +02:00
Roman Volosovskyi e3cc50c7d7
[slow sign in] Adding symkeys and filters in batch
This commit changes the way how keys are restored:
1. batch of `ssh.addSymKey` requests for all sym keys is sent at once
2. `:status-im.transport.core/sym-keys-added` event is dispatched with
   results of all successful `ssh.addSymKey` calls
3. filter is created via `ssh.newMessageFilter`
4. `:shh.callback/filters-added` event is dispatched with all added
   filters as a parameter
5. profit

In ideal case only 2 `re-frame` events are dispatched.
2018-12-27 11:49:50 +02:00
yevh-berdnyk 62c7d645b7
Commit status change depending on e2e tests results
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2018-12-24 16:27:00 +02:00
Andrea Maria Piana 5f910a0bec
Sync public chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-12-24 14:35:17 +01:00
Roman Volosovskyi 9a9cd0d8d0
[slow sign in] Denormalize last-clock-value
In order to get `:last-clock-value` one extra query was executed for
each chat during initialization.

Implementation:
- `:last-clock-value` field was added to `chat` entity
- this field is updated when the message is sent/received
- extra query was removed
2018-12-24 14:18:42 +02:00
Anton Danchenko 923509b9a0
added an ability to run tests by testrail case ids
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2018-12-23 17:15:50 +02:00
Julien Eluard 5db9aa9ac7
Reintroduced broken PR #7092 with fix
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2018-12-21 14:55:32 +01:00
Dmitry Novotochinov 962c49e345
add keycard installation
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-12-20 15:43:37 +03:00
Anton Danchenko 67a47fac56
workaround on wrong transition to home instead of chat
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2018-12-19 13:02:02 +02:00
Roman Volosovskyi c440b7a3a7
[slow sign in] Denorlmalize last message
The last messages of the chats are necessary to properly show the chat
list, which is shown right after signing in. Before this commit, the
last message was retrieved as one of 20 last messages fetched for each
chat.

Implementation:
- `:last-message-content` and `:last-message-type` fields were added to
  `chat` entity
- both fields are updated when messages are received/sent
- loading of the last 20 messages for each chat was removed as
  initialization step
2018-12-17 13:29:10 +02:00
Roman Volosovskyi 07e8f6908d
[#6952] Fix odd app behavior after quick logout
This commit changes the way how/when the node is started/stopped:
1. `node` is not started on the app startup
2. When the user presses "Sign in" button the node is started
   with user specific configs (`InstallationID`, custom bootnodes, etc),
   and only after that `Login` call is performed.
3. When the user creates a new account, at first the node is started
   with default params (the same as would be used when user signs into
   the app after account creation whithout changing any setting), then
   `CreateAccount` call happens, then `Login`.
4. When the user restores their account, the flow is the same as `3`
   but with `RecoverAccount` instead of `CreateAccount`
5. When the user logs out the node is stopped. That's it.
2018-12-17 13:27:17 +02:00
Anton Danchenko 88c06c53d4
urllib upgrade
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2018-12-14 15:50:49 +02:00
Andrea Maria Piana d760f1696c
Add mailservers confirmations & use peer count for online status
We now check that we are only connected to some `peers` instead of using `NetInfo` from `react-native`.

This is because it has been reported to be quite flaky at times, not reporting online status after sleeping, and for privacy concerns (on ios it pings `apple.com`, on desktop `google.com`).

Adds a new banner `Wallet Offline` and change `Connecting to peers` to  `Chat offline`.

A message will be marked as `Sent` only if it made it to the mailserver you are connected to, which will increase the guarantees that we can make about a message (if you see it as sent, it has reached at least a mailserver), this has the consequence that:

- If you are not connected to any mailserver or the mailserver is non responsive/down, and you send a message, it will be marked as `Not sent`, although it might have been actually made it in the network.

Probably this is something that we would like to communicate to the user through UX (i.e. tick if made it to at least a peer, double tick if it made to a mailserver )

Currently I have only enabled this feature in nightlies & devs, I would give it a run and see how we feel about it.
2018-12-12 19:53:01 +01:00
Anton Danchenko f6777edbdc
migration to latest appium version
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
2018-12-12 17:33:00 +02:00