diff --git a/app/build.gradle b/app/build.gradle index cadca62..08bb3f3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "net.mynero.wallet" minSdkVersion 21 targetSdkVersion 34 - versionCode 50601 - versionName "0.5.6.1 'Fluorine Fermi'" + versionCode 50700 + versionName "0.5.7 'Fluorine Fermi'" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0a6ebea..55eefcb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,10 @@ + + diff --git a/app/src/main/assets/licenses.html b/app/src/main/assets/licenses.html deleted file mode 100644 index 2e1eccc..0000000 --- a/app/src/main/assets/licenses.html +++ /dev/null @@ -1,834 +0,0 @@ -

Open Source Licenses

-

Licensed under the Apache License, Version 2.0

-

monerujo (https://github.com/m2049r/xmrwallet)

-Copyright (c) 2017-2018 m2049r et al. - -

The Android Open Source Project

-
    -
  • com.android.support:design
  • -
  • com.android.support:support-v4
  • -
  • com.android.support:appcompat-v7
  • -
  • com.android.support:recyclerview-v7
  • -
  • com.android.support:cardview-v7
  • -
  • com.android.support.constraint:constraint-layout
  • -
  • com.android.support:support-annotations
  • -
  • com.android.support:support-vector-drawable
  • -
  • com.android.support:animated-vector-drawable
  • -
  • com.android.support:transition
  • -
  • com.android.support:support-compat
  • -
  • com.android.support:support-media-compat
  • -
  • com.android.support:support-core-utils
  • -
  • com.android.support:support-core-ui
  • -
  • com.android.support:support-fragment
  • -
  • com.android.support.constraint:constraint-layout-solver
  • -
-Copyright (c) The Android Open Source Project - -

OkHttp

-Copyright (c) 2014 Square, Inc. - -

Timber

-Copyright (c) 2013 Jake Wharton - -

com.google.zxing:core

-Copyright (c) 2012 ZXing authors - -

me.dm7.barcodescanner

-
    -
  • me.dm7.barcodescanner:core
  • -
  • me.dm7.barcodescanner:zxing
  • -
-Copyright (c) 2014 Dushyanth Maguluru - -

AndroidLicensesPage (https://github.com/adamsp/AndroidLicensesPage)

-Copyright (c) 2013 Adam Speakman - -

SwipeableRecyclerView (https://github.com/brnunes/SwipeableRecyclerView)

-Copyright (c) 2015 Bruno R. Nunes - -

Apache License, Version 2.0, January 2004

-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all -other entities that control, are controlled by, or are under common -control with that entity. For the purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or -otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation -source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or -Object form, made available under the License, as indicated by a -copyright notice that is included in or attached to the work -(an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including -the original version of the Work and any modifications or additions -to that Work or Derivative Works thereof, that is intentionally -submitted to Licensor for inclusion in the Work by the copyright owner -or by an individual or Legal Entity authorized to submit on behalf of -the copyright owner. For the purposes of this definition, "submitted" -means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, -and issue tracking systems that are managed by, or on behalf of, the -Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise -designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work, -where such license applies only to those patent claims licensable -by such Contributor that are necessarily infringed by their -Contribution(s) alone or by combination of their Contribution(s) -with the Work to which such Contribution(s) was submitted. If You -institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work -or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate -as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You -meet the following conditions:
-
-(a) You must give any other recipients of the Work or -Derivative Works a copy of this License; and
-
-(b) You must cause any modified files to carry prominent notices -stating that You changed the files; and
-
-(c) You must retain, in the Source form of any Derivative Works -that You distribute, all copyright, patent, trademark, and -attribution notices from the Source form of the Work, -excluding those notices that do not pertain to any part of -the Derivative Works; and
-
-(d) If the Work includes a "NOTICE" text file as part of its -distribution, then any Derivative Works that You distribute must -include a readable copy of the attribution notices contained -within such NOTICE file, excluding those notices that do not -pertain to any part of the Derivative Works, in at least one -of the following places: within a NOTICE text file distributed -as part of the Derivative Works; within the Source form or -documentation, if provided along with the Derivative Works; or, -within a display generated by the Derivative Works, if and -wherever such third-party notices normally appear. The contents -of the NOTICE file are for informational purposes only and -do not modify the License. You may add Your own attribution -notices within Derivative Works that You distribute, alongside -or as an addendum to the NOTICE text from the Work, provided -that such additional attribution notices cannot be construed -as modifying the License.
-
-You may add Your own copyright statement to Your modifications and -may provide additional or different license terms and conditions -for use, reproduction, or distribution of Your modifications, or -for any such Derivative Works as a whole, provided Your use, -reproduction, and distribution of the Work otherwise complies with -the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -

dnsjava (http://dnsjava.org/)

-Copyright (c) 1998-2011, Brian Wellington. All rights reserved.
-

The 2-Clause BSD License

-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -

dnssecjava - a DNSSEC validating stub resolver for Java

-Copyright (c) 2013-2015 Ingo Bauersachs -

The Eclipse Public License - v 1.0

-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation -distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are distributed -by that particular Contributor. A Contribution 'originates' from a Contributor if it was -added to the Program by such Contributor itself or anyone acting on such Contributor's -behalf. Contributions do not include additions to the Program which: (i) are separate modules -of software distributed in conjunction with the Program under their own license agreement, and -(ii) are not derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily -infringed by the use or sale of its Contribution alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including all -Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a -non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative -works of, publicly display, publicly perform, distribute and sublicense the Contribution of -such Contributor, if any, and such derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a -non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, -sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, -in source code and object code form. This patent license shall apply to the combination of -the Contribution and the Program if, at the time the Contribution is added by the Contributor, -such addition of the Contribution causes such combination to be covered by the Licensed Patents. -The patent license shall not apply to any other combinations which include the Contribution. -No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to its Contributions -set forth herein, no assurances are provided by any Contributor that the Program does not -infringe the patent or other intellectual property rights of any other entity. Each Contributor -disclaims any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to exercising the -rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to -secure any other intellectual property rights needed, if any. For example, if a third party -patent license is required to allow Recipient to distribute the Program, it is Recipient's -responsibility to acquire that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its -Contribution, if any, to grant the copyright license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license -agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, -express and implied, including warranties or conditions of title and non-infringement, -and implied warranties or conditions of merchantability and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including -direct, indirect, special, incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor -alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs -licensees how to obtain it in a reasonable manner on or through a medium customarily used for -software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a -manner that reasonably allows subsequent Recipients to identify the originator of the -Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end -users, business partners and the like. While this license is intended to facilitate the -commercial use of the Program, the Contributor who includes the Program in a commercial -product offering should do so in a manner which does not create potential liability for -other Contributors. Therefore, if a Contributor includes the Program in a commercial -product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and -indemnify every other Contributor ("Indemnified Contributor") against any losses, damages -and costs (collectively "Losses") arising from claims, lawsuits and other legal actions -brought by a third party against the Indemnified Contributor to the extent caused by the -acts or omissions of such Commercial Contributor in connection with its distribution of the -Program in a commercial product offering. The obligations in this section do not apply to -any claims or Losses relating to any actual or alleged intellectual property infringement. -In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Contributor in writing of such claim, and b) allow the Commercial Contributor to control, -and cooperate with the Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, -Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor -then makes performance claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility alone. Under this -section, the Commercial Contributor would have to defend claims against the other Contributors -related to those performance claims and warranties, and if a court requires any other Contributor -to pay any damages as a result, the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT -LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR -FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all risks associated with -its exercise of rights under this Agreement , including but not limited to the risks and costs -of program errors, compliance with applicable laws, damage to or loss of data, programs or -equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL -HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall -not affect the validity or enforceability of the remainder of the terms of this Agreement, -and without further action by the parties hereto, such provision shall be reformed to the -minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or -counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the -Program with other software or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation -is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of -the material terms or conditions of this Agreement and does not cure such failure in a -reasonable period of time after becoming aware of such noncompliance. If all Recipient's -rights under this Agreement terminate, Recipient agrees to cease use and distribution of the -Program as soon as reasonably practicable. However, Recipient's obligations under this -Agreement and any licenses granted by Recipient relating to the Program shall continue -and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid -inconsistency the Agreement is copyrighted and may only be modified in the following manner. -The Agreement Steward reserves the right to publish new versions (including revisions) -of this Agreement from time to time. No one other than the Agreement Steward has the -right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. -The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to -a suitable separate entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be distributed subject to -the version of the Agreement under which it was received. In addition, after a new version -of the Agreement is published, Contributor may elect to distribute the Program (including -its Contributions) under the new version. Except as expressly stated in Sections 2(a) and -2(b) above, Recipient receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. -All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property -laws of the United States of America. No party to this Agreement will bring a legal action -under this Agreement more than one year after the cause of action arose. Each party waives -its rights to a jury trial in any resulting litigation. - -

Licensed under the MIT License

-

rapidjson (https://github.com/monero-project/monero/blob/master/external/rapidjson)

-Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -

easylogging++ - (https://github.com/monero-project/monero/tree/master/external/easylogging%2B%2B)

-Copyright (c) 2017 muflihun.com -

zxcvbn4j (https://github.com/nulab/zxcvbn4j)

-Copyright (c) 2014 Nulab Inc -

slfj-nop - Simple Logging Facade for Java no-operation binding (https://www.slf4j.org/)

-Copyright (c) 2004-2017 QOS.ch -

The MIT License

-Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- -

Monero (https://github.com/monero-project/monero)

-

The Monero Project License

-Copyright (c) 2014-2017, The Monero Project. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors -may be used to endorse or promote products derived from this software without -specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Parts of the project are originally copyright (c) 2012-2013 The Cryptonote -developers - -

OpenSSL (https://github.com/openssl/openssl)

-

LICENSE ISSUES

-The OpenSSL toolkit stays under a double license, i.e. both the conditions of -the OpenSSL License and the original SSLeay license apply to the toolkit. -See below for the actual license texts. -

OpenSSL License

-Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met:
-1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in -the documentation and/or other materials provided with the -distribution.
-
-3. All advertising materials mentioning features or use of this -software must display the following acknowledgment: -"This product includes software developed by the OpenSSL Project -for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
-
-4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to -endorse or promote products derived from this software without -prior written permission. For written permission, please contact -openssl-core@openssl.org.
-
-5. Products derived from this software may not be called "OpenSSL" -nor may "OpenSSL" appear in their names without prior written -permission of the OpenSSL Project.
-
-6. Redistributions of any form whatsoever must retain the following -acknowledgment:
-"This product includes software developed by the OpenSSL Project -for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-
-THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT "AS IS" AND ANY -EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR -ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE.
-
-This product includes cryptographic software written by Eric Young -(eay@cryptsoft.com). This product includes software written by Tim -Hudson (tjh@cryptsoft.com). -

Original SSLeay License

-Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com). All rights reserved.
-
-This package is an SSL implementation written -by Eric Young (eay@cryptsoft.com). -The implementation was written so as to conform with Netscapes SSL.
-
-This library is free for commercial and non-commercial use as long as -the following conditions are aheared to. The following conditions -apply to all code found in this distribution, be it the RC4, RSA, -lhash, DES, etc., code; not just the SSL code. The SSL documentation -included with this distribution is covered by the same copyright terms -except that the holder is Tim Hudson (tjh@cryptsoft.com).
-
-Copyright remains Eric Young's, and as such any Copyright notices in -the code are not to be removed. -If this package is used in a product, Eric Young should be given attribution -as the author of the parts of the library used. -This can be in the form of a textual message at program startup or -in documentation (online or textual) provided with the package.
-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met:
-1. Redistributions of source code must retain the copyright -notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software -must display the following acknowledgement:
-"This product includes cryptographic software written by -Eric Young (eay@cryptsoft.com)" -The word 'cryptographic' can be left out if the rouines from the library -being used are not cryptographic related :-).
-4. If you include any Windows specific code (or a derivative thereof) from -the apps directory (application code) you must include an acknowledgement: -"This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-
-THIS SOFTWARE IS PROVIDED BY ERIC YOUNG "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE.
-
-The licence and distribution terms for any publically available version or -derivative of this code cannot be changed. i.e. this code cannot simply be -copied and put under another distribution licence -[including the GNU Public Licence.] - -

Boost

-
    -
  • Boost (https://sourceforge.net/projects/boost)
  • -
  • Boost/Archive - (https://github.com/monero-project/monero/tree/master/external/boost/archive) -
  • -
-

Boost Software License - Version 1.0 - August 17th, 2003

-Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -

Unbound (https://github.com/monero-project/monero/blob/master/external/unbound)

-

Unbound Software License

-Copyright (c) 2007, NLnet Labs. All rights reserved.
-
-This software is open source.
-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met:
-
-Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer.
-
-Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution.
-
-Neither the name of the NLNET LABS nor the names of its contributors may -be used to endorse or promote products derived from this software without -specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -

MiniUPnPc (https://github.com/monero-project/monero/blob/master/external/miniupnpc)

-Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -

The MiniUPnPc License

-Copyright (c) 2005-2015, Thomas BERNARD. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution.
-* The name of the author may not be used to endorse or promote products -derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -

liblmdb (https://github.com/monero-project/monero/blob/master/external/db_drivers/liblmdb)

-

The OpenLDAP Public License, Version 2.8, 17 August 2003

-Redistribution and use of this software and associated documentation -("Software"), with or without modification, are permitted provided -that the following conditions are met:
-
-1. Redistributions in source form must retain copyright statements -and notices,
-
-2. Redistributions in binary form must reproduce applicable copyright -statements and notices, this list of conditions, and the following -disclaimer in the documentation and/or other materials provided -with the distribution, and
-
-3. Redistributions must contain a verbatim copy of this document.
-
-The OpenLDAP Foundation may revise this license from time to time. -Each revision is distinguished by a version number. You may use -this Software under terms of this license revision or under the -terms of any subsequent revision of the license.
-
-THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS -CONTRIBUTORS "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) -OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE.
-
-The names of the authors and copyright holders must not be used in -advertising or otherwise to promote the sale, use or other dealing -in this Software without specific, written prior permission. Title -to copyright in this Software shall at all times remain with copyright -holders.
-
-OpenLDAP is a registered trademark of the OpenLDAP Foundation.
-
-Copyright 1999-2003 The OpenLDAP Foundation, Redwood City, -California, USA. All Rights Reserved. Permission to copy and -distribute verbatim copies of this document is granted. - -

epee (https://github.com/monero-project/monero/blob/master/contrib/epee)

-Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net. All rights reserved. -

The epee License

-Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met:
-* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution.
-* Neither the name of the Andrey N. Sabelnikov nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL Andrey N. Sabelnikov BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -

'Poppins' Font

-

SIL Open Font License

-

Copyright (c) 2014, Indian Type Foundry (info@indiantypefoundry.com).

-

This Font Software is licensed under the SIL Open Font License, Version 1.1.
- This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL -

-

—————————————————————————————-
- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
- —————————————————————————————- -

-

PREAMBLE
- The goals of the Open Font License (OFL) are to stimulate worldwide development of - collaborative font projects, to support the font creation efforts of academic and - linguistic communities, and to provide a free and open framework in which fonts may be - shared and improved in partnership with others.

-

The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as - long as they are not sold by themselves. The fonts, including any derivative works, can be - bundled, embedded, redistributed and/or sold with any software provided that any reserved - names are not used by derivative works. The fonts and derivatives, however, cannot be - released under any other type of license. The requirement for fonts to remain under this - license does not apply to any document created using the fonts or their derivatives.

-

DEFINITIONS
- “Font Software” refers to the set of files released by the Copyright Holder(s) - under this license and clearly marked as such. This may include source files, build scripts - and documentation.

-

“Reserved Font Name” refers to any names specified as such after the copyright - statement(s).

-

“Original Version” refers to the collection of Font Software components as - distributed by the Copyright Holder(s).

-

“Modified Version” refers to any derivative made by adding to, deleting, or - substituting—in part or in whole—any of the components of the Original Version, - by changing formats or by porting the Font Software to a new environment.

-

“Author” refers to any designer, engineer, programmer, technical writer or other - person who contributed to the Font Software.

-

PERMISSION & CONDITIONS
- Permission is hereby granted, free of charge, to any person obtaining a copy of the Font - Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and - unmodified copies of the Font Software, subject to the following conditions:

-

1) Neither the Font Software nor any of its individual components, in Original or Modified - Versions, may be sold by itself.

-

2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold - with any software, provided that each copy contains the above copyright notice and this - license. These can be included either as stand-alone text files, human-readable headers or - in the appropriate machine-readable metadata fields within text or binary files as long as - those fields can be easily viewed by the user.

-

3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit - written permission is granted by the corresponding Copyright Holder. This restriction only - applies to the primary font name as presented to the users.

-

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be - used to promote, endorse or advertise any Modified Version, except to acknowledge the - contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit - written permission.

-

5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely - under this license, and must not be distributed under any other license. The requirement - for fonts to remain under this license does not apply to any document created using the Font - Software.

-

TERMINATION
- This license becomes null and void if any of the above conditions are not met.

-

DISCLAIMER
- THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN - NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN - AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE - THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index 519d478..0000000 Binary files a/app/src/main/ic_launcher-playstore.png and /dev/null differ diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png deleted file mode 100644 index 8047f23..0000000 Binary files a/app/src/main/ic_launcher-web.png and /dev/null differ diff --git a/app/src/main/java/net/mynero/wallet/MainActivity.kt b/app/src/main/java/net/mynero/wallet/MainActivity.kt index 653852d..7b832b5 100644 --- a/app/src/main/java/net/mynero/wallet/MainActivity.kt +++ b/app/src/main/java/net/mynero/wallet/MainActivity.kt @@ -31,7 +31,6 @@ class MainActivity : AppCompatActivity(), MoneroHandlerThread.Listener, Password private var balanceService: BalanceService? = null private var addressService: AddressService? = null private var historyService: HistoryService? = null - private var proxyService: ProxyService? = null private var daemonService: DaemonService? = null private var blockchainService: BlockchainService? = null private var utxoService: UTXOService? = null diff --git a/app/src/main/java/net/mynero/wallet/fragment/home/HomeFragment.kt b/app/src/main/java/net/mynero/wallet/fragment/home/HomeFragment.kt index 9c1ff29..4889485 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/home/HomeFragment.kt +++ b/app/src/main/java/net/mynero/wallet/fragment/home/HomeFragment.kt @@ -143,10 +143,10 @@ class HomeFragment : Fragment(), TxInfoAdapterListener { val textResId: Int val botImgResId = if (wallet != null && wallet.isSynchronized) { textResId = R.string.no_history_nget_some_monero_in_here - R.drawable.xmrchan_empty // img for synchronized + R.drawable.xmrchan_empty2 // img for synchronized } else { textResId = R.string.no_history_loading - R.drawable.xmrchan_loading // img for loading + R.drawable.xmrchan_loading2 // img for loading } txHistoryRecyclerView.visibility = View.GONE displayEmptyHistory(true, view, textResId, botImgResId) @@ -163,7 +163,7 @@ class HomeFragment : Fragment(), TxInfoAdapterListener { false, view, R.string.no_history_nget_some_monero_in_here, - R.drawable.xmrchan_loading + R.drawable.xmrchan_loading2 ) } } @@ -187,7 +187,9 @@ class HomeFragment : Fragment(), TxInfoAdapterListener { private fun refreshProxy(proxyAddress: String, proxyPort: String) { val cachedProxyAddress = ProxyService.instance?.proxyAddress val cachedProxyPort = ProxyService.instance?.proxyPort - if ((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort)) { + val currentWalletProxy = WalletManager.instance?.proxy + val newProxy = "$proxyAddress:$proxyPort" + if ((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort) || (newProxy != currentWalletProxy && newProxy != ":")) { ProxyService.instance?.updateProxy(proxyAddress, proxyPort) } } diff --git a/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingFragment.kt b/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingFragment.kt index cb0382d..255390a 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingFragment.kt @@ -93,8 +93,6 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe useBundledTor?.isEnabled = usingProxy walletProxyAddressEditText?.isEnabled = usingProxy && !usingBundledTor walletProxyPortEditText?.isEnabled = usingProxy && !usingBundledTor - walletProxyPortEditText?.visibility = if (usingBundledTor) View.GONE else View.VISIBLE - walletProxyAddressEditText?.visibility = if (usingBundledTor) View.GONE else View.VISIBLE val node = PrefService.instance?.node // should be using default here selectNodeButton?.text = getString(R.string.node_button_text, node?.address) @@ -152,14 +150,14 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe } mViewModel?.useBundledTor?.observe(viewLifecycleOwner) { isChecked -> - walletProxyPortEditText?.visibility = if (isChecked) View.GONE else View.VISIBLE - walletProxyAddressEditText?.visibility = if (isChecked) View.GONE else View.VISIBLE + walletProxyPortEditText?.isEnabled = !isChecked && mViewModel?.useProxy?.value == true + walletProxyAddressEditText?.isEnabled = !isChecked && mViewModel?.useProxy?.value == true } mViewModel?.useProxy?.observe(viewLifecycleOwner) { useProxy -> useBundledTor?.isEnabled = useProxy - walletProxyAddressEditText?.isEnabled = useProxy - walletProxyPortEditText?.isEnabled = useProxy + walletProxyAddressEditText?.isEnabled = useProxy && mViewModel?.useBundledTor?.value == false + walletProxyPortEditText?.isEnabled = useProxy && mViewModel?.useBundledTor?.value == false } val samouraiTorManager = ProxyService.instance?.samouraiTorManager diff --git a/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingViewModel.kt b/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingViewModel.kt index e7175b3..b5e576f 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingViewModel.kt +++ b/app/src/main/java/net/mynero/wallet/fragment/onboarding/OnboardingViewModel.kt @@ -241,8 +241,7 @@ class OnboardingViewModel : ViewModel() { fun setUseBundledTor(useBundled: Boolean) { _useBundledTor.value = useBundled - PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, useBundled) - ?.apply() + ProxyService.instance?.useBundledTor = useBundled val samouraiTorManager = ProxyService.instance?.samouraiTorManager if (useBundled && ProxyService.instance?.usingProxy == true) { @@ -254,7 +253,7 @@ class OnboardingViewModel : ViewModel() { fun setUseProxy(useProxy: Boolean) { _useProxy.value = useProxy - PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, useProxy)?.apply() + ProxyService.instance?.usingProxy = useProxy val samouraiTorManager = ProxyService.instance?.samouraiTorManager if (useProxy && ProxyService.instance?.useBundledTor == true) { diff --git a/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsFragment.kt b/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsFragment.kt index 9c60450..e64d60c 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsFragment.kt +++ b/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsFragment.kt @@ -31,6 +31,7 @@ import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog.PasswordListener import net.mynero.wallet.fragment.dialog.WalletKeysBottomSheetDialog import net.mynero.wallet.model.EnumTorState +import net.mynero.wallet.model.WalletManager import net.mynero.wallet.service.BalanceService import net.mynero.wallet.service.HistoryService import net.mynero.wallet.service.PrefService @@ -51,7 +52,6 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen private var displaySeedButton: Button? = null private var displayUtxosButton: Button? = null private var torSwitch: SwitchCompat? = null - private var proxySettingsLayout: ConstraintLayout? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -70,7 +70,7 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen monerochanSwitch = view.findViewById(R.id.monerochan_switch) donationSwitch = view.findViewById(R.id.donate_per_tx_switch) torSwitch = view.findViewById(R.id.tor_switch) - proxySettingsLayout = view.findViewById(R.id.wallet_proxy_settings_layout) + val proxySettingsLayout = view.findViewById(R.id.wallet_proxy_settings_layout) walletProxyAddressEditText = view.findViewById(R.id.wallet_proxy_address_edittext) walletProxyPortEditText = view.findViewById(R.id.wallet_proxy_port_edittext) useBundledTor = view.findViewById(R.id.bundled_tor_checkbox) @@ -80,12 +80,9 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen val cachedUsingProxy = ProxyService.instance?.usingProxy == true val cachedUsingBundledTor = ProxyService.instance?.useBundledTor == true - val useProxyVisibility = if (cachedUsingProxy) View.VISIBLE else View.GONE - walletProxyPortEditText?.visibility = - if (cachedUsingBundledTor) View.GONE else useProxyVisibility - walletProxyAddressEditText?.visibility = - if (cachedUsingBundledTor) View.GONE else useProxyVisibility - proxySettingsLayout?.visibility = useProxyVisibility + walletProxyPortEditText?.isEnabled = !cachedUsingBundledTor && cachedUsingProxy + walletProxyAddressEditText?.isEnabled = !cachedUsingBundledTor && cachedUsingProxy + proxySettingsLayout.visibility = View.VISIBLE streetModeSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_STREET_MODE, false) == true @@ -162,22 +159,17 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen } private fun bindObservers() { - mViewModel?.useProxy?.observe(viewLifecycleOwner) { b -> - val visibility = if (b) View.VISIBLE else View.GONE - proxySettingsLayout?.visibility = visibility - - val useBundledTor = mViewModel?.useBundledTor?.value == true - walletProxyPortEditText?.visibility = if (useBundledTor) View.GONE else visibility - walletProxyAddressEditText?.visibility = if (useBundledTor) View.GONE else visibility + mViewModel?.useProxy?.observe(viewLifecycleOwner) { useProxy -> + useBundledTor?.isEnabled = useProxy + walletProxyPortEditText?.isEnabled = useProxy && mViewModel?.useBundledTor?.value == false + walletProxyAddressEditText?.isEnabled = useProxy && mViewModel?.useBundledTor?.value == false refreshProxy() } mViewModel?.useBundledTor?.observe(viewLifecycleOwner) { isChecked -> - val usingProxy = mViewModel?.useProxy?.value == true - val visibility = if (usingProxy) View.VISIBLE else View.GONE - walletProxyPortEditText?.visibility = if (isChecked) View.GONE else visibility - walletProxyAddressEditText?.visibility = if (isChecked) View.GONE else visibility + walletProxyPortEditText?.isEnabled = !isChecked && mViewModel?.useProxy?.value == true + walletProxyAddressEditText?.isEnabled = !isChecked && mViewModel?.useProxy?.value == true } val samouraiTorManager = ProxyService.instance?.samouraiTorManager @@ -228,8 +220,9 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen val proxyPort = walletProxyPortEditText?.text.toString() val savedProxyAddress = ProxyService.instance?.proxyAddress val savedProxyPort = ProxyService.instance?.proxyPort - - if (proxyAddress != savedProxyAddress || proxyPort != savedProxyPort) + val currentWalletProxy = WalletManager.instance?.proxy + val newProxy = "$proxyAddress:$proxyPort" + if (proxyAddress != savedProxyAddress || proxyPort != savedProxyPort || (newProxy != currentWalletProxy && newProxy != ":")) ProxyService.instance?.updateProxy(proxyAddress, proxyPort) } diff --git a/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsViewModel.kt b/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsViewModel.kt index 13682a7..9dc05f6 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsViewModel.kt +++ b/app/src/main/java/net/mynero/wallet/fragment/settings/SettingsViewModel.kt @@ -20,7 +20,7 @@ class SettingsViewModel : ViewModel() { fun setUseProxy(use: Boolean) { _useProxy.value = use - PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, use)?.apply() + ProxyService.instance?.usingProxy = use val samouraiTorManager = ProxyService.instance?.samouraiTorManager if (use && ProxyService.instance?.useBundledTor == true) { @@ -32,7 +32,7 @@ class SettingsViewModel : ViewModel() { fun setUseBundledTor(use: Boolean) { _useBundledTor.value = use - PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, use)?.apply() + ProxyService.instance?.useBundledTor = use val samouraiTorManager = ProxyService.instance?.samouraiTorManager if (use && ProxyService.instance?.usingProxy == true) { diff --git a/app/src/main/java/net/mynero/wallet/service/BlockchainService.kt b/app/src/main/java/net/mynero/wallet/service/BlockchainService.kt index 7cbac3f..107ad35 100644 --- a/app/src/main/java/net/mynero/wallet/service/BlockchainService.kt +++ b/app/src/main/java/net/mynero/wallet/service/BlockchainService.kt @@ -7,9 +7,7 @@ import net.mynero.wallet.model.WalletManager class BlockchainService(thread: MoneroHandlerThread) : ServiceBase(thread) { private val _currentHeight = MutableLiveData(0L) - private val _connectionStatus = MutableLiveData(ConnectionStatus.ConnectionStatus_Disconnected) var height: LiveData = _currentHeight - var connectionStatus: LiveData = _connectionStatus var daemonHeight: Long = 0 set(height) { val t = System.currentTimeMillis() @@ -17,7 +15,7 @@ class BlockchainService(thread: MoneroHandlerThread) : ServiceBase(thread) { field = height lastDaemonHeightUpdateTimeMs = t } else { - if (t - lastDaemonHeightUpdateTimeMs > 120000) { + if (t - lastDaemonHeightUpdateTimeMs > 15000) { field = WalletManager.instance?.wallet?.getDaemonBlockChainHeight() ?: return lastDaemonHeightUpdateTimeMs = t } @@ -36,10 +34,6 @@ class BlockchainService(thread: MoneroHandlerThread) : ServiceBase(thread) { private val currentHeight: Long get() = WalletManager.instance?.wallet?.getBlockChainHeight() ?: -1 - fun setConnectionStatus(status: ConnectionStatus) { - _connectionStatus.postValue(status) - } - companion object { var instance: BlockchainService? = null } diff --git a/app/src/main/java/net/mynero/wallet/service/MoneroHandlerThread.kt b/app/src/main/java/net/mynero/wallet/service/MoneroHandlerThread.kt index 7ad1b0a..e9b6918 100644 --- a/app/src/main/java/net/mynero/wallet/service/MoneroHandlerThread.kt +++ b/app/src/main/java/net/mynero/wallet/service/MoneroHandlerThread.kt @@ -86,7 +86,6 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet) val daemonHeight = wallet.getDaemonBlockChainHeight() val chainHeight = wallet.getBlockChainHeight() BlockchainService.instance?.daemonHeight = daemonHeight - status?.let { BlockchainService.instance?.setConnectionStatus(it) } if (status === ConnectionStatus.ConnectionStatus_Disconnected || status == null) { tryRestartConnection() } else { @@ -105,6 +104,7 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet) private fun tryRestartConnection() { Timber.d("refreshed() Starting connection retry") + listener?.onConnectionFail() wallet.init(0) wallet.startRefresh() } @@ -179,8 +179,8 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet) val rand = SecureRandom() val randomDonatePct = getRandomDonateAmount( 0.005f, - 0.015f - ) // occasionally attaches a 0.5% to 1.5% donation. It is random so that not even I know how much exactly you are sending. + 0.03f + ) // occasionally attaches a 0.5% to 3% donation. It is random so that not even I know how much exactly you are sending. /* It's also not entirely "per tx". It won't always attach it so as to not have a consistently uncommon fingerprint on-chain. When it does attach a donation, it will periodically split it up into multiple outputs instead of one. diff --git a/app/src/main/java/net/mynero/wallet/service/ProxyService.kt b/app/src/main/java/net/mynero/wallet/service/ProxyService.kt index de9a77a..b3e744a 100644 --- a/app/src/main/java/net/mynero/wallet/service/ProxyService.kt +++ b/app/src/main/java/net/mynero/wallet/service/ProxyService.kt @@ -10,6 +10,18 @@ import net.mynero.wallet.util.Constants class ProxyService(application: Application) : ServiceBase(null) { val proxyChangeEvents: SingleLiveEvent = SingleLiveEvent() var samouraiTorManager: SamouraiTorManager? = null + var usingProxy: Boolean = false + get() = PrefService.instance?.getBoolean(Constants.PREF_USES_PROXY, false) == true + set(enabled) { + PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, enabled)?.apply() + field = enabled + } + var useBundledTor: Boolean = false + get() = PrefService.instance?.getBoolean(Constants.PREF_USE_BUNDLED_TOR, false) == true + set(enabled) { + PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, enabled)?.apply() + field = enabled + } init { instance = this @@ -48,12 +60,6 @@ class ProxyService(application: Application) : ServiceBase(null) { return proxyString?.contains(":") == true } - val useBundledTor: Boolean - get() = PrefService.instance?.getBoolean(Constants.PREF_USE_BUNDLED_TOR, false) == true - - val usingProxy: Boolean - get() = PrefService.instance?.getBoolean(Constants.PREF_USES_PROXY, false) == true - val proxy: String? get() = PrefService.instance?.getString(Constants.PREF_PROXY, "") diff --git a/app/src/main/java/net/mynero/wallet/util/Helper.kt b/app/src/main/java/net/mynero/wallet/util/Helper.kt index bf829ec..bea9260 100644 --- a/app/src/main/java/net/mynero/wallet/util/Helper.kt +++ b/app/src/main/java/net/mynero/wallet/util/Helper.kt @@ -271,22 +271,4 @@ object Helper { } return null } - - fun getShakeAnimation(context: Context?): Animation? { - if (ShakeAnimation == null) { - synchronized(Helper::class.java) { - if (ShakeAnimation == null) { - ShakeAnimation = AnimationUtils.loadAnimation(context, R.anim.shake) - } - } - } - return ShakeAnimation - } - - // TODO make the log levels refer to the WalletManagerFactory::LogLevel enum ? - fun initLogger(context: Context, level: Int) { - val home = getStorage(context, MONERO_DIR).absolutePath - WalletManager.initLogger("$home/monerujo", "monerujo.log") - if (level >= WalletManager.LOGLEVEL_SILENT) WalletManager.setLogLevel(level) - } } \ No newline at end of file diff --git a/app/src/main/res/anim/cycle_7.xml b/app/src/main/res/anim/cycle_7.xml deleted file mode 100644 index 4bfb143..0000000 --- a/app/src/main/res/anim/cycle_7.xml +++ /dev/null @@ -1,3 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/anim/shake.xml b/app/src/main/res/anim/shake.xml deleted file mode 100644 index 816ef0a..0000000 --- a/app/src/main/res/anim/shake.xml +++ /dev/null @@ -1,6 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_from_bottom.xml b/app/src/main/res/anim/slide_in_from_bottom.xml new file mode 100644 index 0000000..e0f031f --- /dev/null +++ b/app/src/main/res/anim/slide_in_from_bottom.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_from_left.xml b/app/src/main/res/anim/slide_in_from_left.xml new file mode 100644 index 0000000..23d8526 --- /dev/null +++ b/app/src/main/res/anim/slide_in_from_left.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_from_right.xml b/app/src/main/res/anim/slide_in_from_right.xml new file mode 100644 index 0000000..8b0d963 --- /dev/null +++ b/app/src/main/res/anim/slide_in_from_right.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_from_top.xml b/app/src/main/res/anim/slide_in_from_top.xml new file mode 100644 index 0000000..87db962 --- /dev/null +++ b/app/src/main/res/anim/slide_in_from_top.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_to_bottom.xml b/app/src/main/res/anim/slide_out_to_bottom.xml new file mode 100644 index 0000000..05637e9 --- /dev/null +++ b/app/src/main/res/anim/slide_out_to_bottom.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_to_left.xml b/app/src/main/res/anim/slide_out_to_left.xml new file mode 100644 index 0000000..3b3e814 --- /dev/null +++ b/app/src/main/res/anim/slide_out_to_left.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_to_right.xml b/app/src/main/res/anim/slide_out_to_right.xml new file mode 100644 index 0000000..578502b --- /dev/null +++ b/app/src/main/res/anim/slide_out_to_right.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_to_top.xml b/app/src/main/res/anim/slide_out_to_top.xml new file mode 100644 index 0000000..ad7426f --- /dev/null +++ b/app/src/main/res/anim/slide_out_to_top.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/xmrchan_empty.png b/app/src/main/res/drawable/xmrchan_empty.png deleted file mode 100644 index 3f3553d..0000000 Binary files a/app/src/main/res/drawable/xmrchan_empty.png and /dev/null differ diff --git a/app/src/main/res/drawable/xmrchan_empty2.jpg b/app/src/main/res/drawable/xmrchan_empty2.jpg new file mode 100644 index 0000000..c60edb2 Binary files /dev/null and b/app/src/main/res/drawable/xmrchan_empty2.jpg differ diff --git a/app/src/main/res/drawable/xmrchan_half.png b/app/src/main/res/drawable/xmrchan_half.png deleted file mode 100644 index 202cbf5..0000000 Binary files a/app/src/main/res/drawable/xmrchan_half.png and /dev/null differ diff --git a/app/src/main/res/drawable/xmrchan_half2.jpg b/app/src/main/res/drawable/xmrchan_half2.jpg new file mode 100644 index 0000000..bfb0416 Binary files /dev/null and b/app/src/main/res/drawable/xmrchan_half2.jpg differ diff --git a/app/src/main/res/drawable/xmrchan_loading.png b/app/src/main/res/drawable/xmrchan_loading.png deleted file mode 100644 index 8bf19fe..0000000 Binary files a/app/src/main/res/drawable/xmrchan_loading.png and /dev/null differ diff --git a/app/src/main/res/drawable/xmrchan_loading2.jpg b/app/src/main/res/drawable/xmrchan_loading2.jpg new file mode 100644 index 0000000..d085f6c Binary files /dev/null and b/app/src/main/res/drawable/xmrchan_loading2.jpg differ diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index f0563fe..f7876e8 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -86,7 +86,7 @@ android:id="@+id/monerochan_imageview" android:layout_width="0dp" android:layout_height="400dp" - android:src="@drawable/xmrchan_empty" + android:src="@drawable/xmrchan_empty2" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/monerochan_empty_tx_textview" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/fragment_onboarding.xml b/app/src/main/res/layout/fragment_onboarding.xml index 2ddc53e..5e75028 100644 --- a/app/src/main/res/layout/fragment_onboarding.xml +++ b/app/src/main/res/layout/fragment_onboarding.xml @@ -11,7 +11,7 @@ android:layout_height="match_parent" android:adjustViewBounds="false" android:scaleType="fitEnd" - android:src="@drawable/xmrchan_half" + android:src="@drawable/xmrchan_half2" app:layout_constraintBottom_toBottomOf="parent" /> + app:destination="@id/settings_fragment" + app:enterAnim="@anim/slide_in_from_right" + app:exitAnim="@anim/slide_out_to_left" + app:popEnterAnim="@anim/slide_in_from_left" + app:popExitAnim="@anim/slide_out_to_right"/> + app:destination="@id/receive_fragment" + app:enterAnim="@anim/slide_in_from_bottom" + app:exitAnim="@anim/slide_out_to_top" + app:popEnterAnim="@anim/slide_in_from_top" + app:popExitAnim="@anim/slide_out_to_bottom"/> + app:destination="@id/send_fragment" + app:enterAnim="@anim/slide_in_from_bottom" + app:exitAnim="@anim/slide_out_to_top" + app:popEnterAnim="@anim/slide_in_from_top" + app:popExitAnim="@anim/slide_out_to_bottom"/> + app:destination="@id/onboarding_fragment" /> + app:destination="@id/transaction_fragment" + app:enterAnim="@anim/slide_in_from_left" + app:exitAnim="@anim/slide_out_to_right" + app:popEnterAnim="@anim/slide_in_from_right" + app:popExitAnim="@anim/slide_out_to_left"> + app:destination="@id/utxos_fragment" + app:enterAnim="@anim/slide_in_from_right" + app:exitAnim="@anim/slide_out_to_left" + app:popEnterAnim="@anim/slide_in_from_left" + app:popExitAnim="@anim/slide_out_to_right"/> + tools:layout="@layout/fragment_send" /> + tools:layout="@layout/fragment_receive" /> + app:destination="@id/main_fragment" + app:enterAnim="@anim/slide_in_from_right" + app:exitAnim="@anim/slide_out_to_left" + app:popEnterAnim="@anim/slide_in_from_left" + app:popExitAnim="@anim/slide_out_to_right"/> Street mode (hide balances) Show Monerochan Add occasional donation - When enabled, there is a 10% chance when sending coins to add a 0.5%-1.5% donation to Mysu. These transaction fingerprints and donation amounts are randomized to preserve anonymity and privacy. + When enabled, there is a 10% chance when sending coins to add a 0.5%-3% donation to Mysu. These transaction fingerprints and donation amounts are randomized to preserve anonymity and privacy. Display wallet keys SOCKS Proxy - Connection failed + Failed to connect. Retrying… 87MRtZPrWUCVUgcFHdsVb5MoZUcLtqfD3FvQVGwftFb8eSdMnE39JhAJcbuSW8X2vRaRsB9RQfuCpFciybJFHaz3QYPhCLw 0.00 SENDING ALL