diff --git a/README.md b/README.md index 0eb2123e..fc28062a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Discord Channel](https://img.shields.io/badge/discord-public@mTHMMY-738bd7.svg?style=flat)][discord-server] ![Last Commit](https://img.shields.io/github/last-commit/ThmmyNoLife/mTHMMY/develop.svg?style=flat) -![mTHMMY logo](app/src/main/res/mipmap-xhdpi/ic_launcher.png) +![mTHMMY logo](app/src/main/res/mipmap-xhdpi/ic_launcher_round.png) A mobile app for [thmmy.gr](https://www.thmmy.gr). diff --git a/app/build.gradle b/app/build.gradle index a4f3e951..5e0f435c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,15 +7,15 @@ apply plugin: 'io.fabric' android { compileSdkVersion 29 - buildToolsVersion = '29.0.2' + buildToolsVersion = '29.0.3' defaultConfig { vectorDrawables.useSupportLibrary = true applicationId "gr.thmmy.mthmmy" minSdkVersion 19 targetSdkVersion 29 - versionCode 22 - versionName "1.7.4" + versionCode 23 + versionName "1.8.0" archivesBaseName = "mTHMMY-v$versionName" buildConfigField "String", "CURRENT_BRANCH", "\"" + getCurrentBranch() + "\"" buildConfigField "String", "COMMIT_HASH", "\"" + getCommitHash() + "\"" @@ -29,6 +29,7 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { + multiDexEnabled true def date = new Date().format('ddMMyy_HHmmss') archivesBaseName = archivesBaseName + "-$date" // Disable fabric build ID generation for debug builds @@ -72,37 +73,45 @@ tasks.whenTaskAdded { task -> dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation project(":emojis") implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.preference:preference:1.1.0' + implementation 'androidx.preference:preference:1.1.1' implementation 'androidx.legacy:legacy-preference-v14:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.0.0' - implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha04' + implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'androidx.exifinterface:exifinterface:1.1.0-beta01' - implementation 'com.google.android.material:material:1.0.0' - implementation 'com.google.firebase:firebase-core:17.0.0' - implementation 'com.google.firebase:firebase-messaging:19.0.1' + implementation 'androidx.exifinterface:exifinterface:1.2.0' + implementation 'com.google.android.material:material:1.1.0' + implementation 'com.google.firebase:firebase-analytics:17.4.2' + implementation 'com.google.firebase:firebase-messaging:20.2.0' implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' implementation 'com.snatik:storage:2.1.0' - implementation 'com.squareup.okhttp3:okhttp:3.12.0' //TODO: Warning: okhttp has dropped support for Android v.19 since okhttp 3.13! - implementation 'com.squareup.picasso:picasso:2.5.2' - implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0' + implementation 'com.squareup.okhttp3:okhttp:3.12.12' //TODO: Warning: okhttp has dropped support for Android v.19 since okhttp 3.13! implementation 'org.jsoup:jsoup:1.10.3' //TODO: Warning: upgrading from 1.10.3 will break stuff! + implementation 'joda-time:joda-time:2.10.4' implementation 'com.github.franmontiel:PersistentCookieJar:1.0.1' implementation 'com.github.PhilJay:MPAndroidChart:3.0.3' implementation 'com.mikepenz:materialdrawer:6.1.1' implementation 'com.mikepenz:fontawesome-typeface:4.7.0.0@aar' implementation 'com.mikepenz:google-material-typeface:3.0.1.2.original@aar' - implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19' implementation 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1'//TODO: deprecated! + implementation 'com.github.chrisbanes:PhotoView:2.3.0' implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2' implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'ru.noties:markwon:2.0.2' implementation 'net.gotev:uploadservice:3.5.2' implementation 'net.gotev:uploadservice-okhttp:3.4.2' //TODO: Warning: v.3.5 depends on okhttp 3.13! - implementation 'com.itkacher.okhttpprofiler:okhttpprofiler:1.0.5' //Plugin: https://plugins.jetbrains.com/plugin/11249-okhttp-profiler + implementation 'com.itkacher.okhttpprofiler:okhttpprofiler:1.0.7' //Plugin: https://plugins.jetbrains.com/plugin/11249-okhttp-profiler + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + testImplementation 'junit:junit:4.12' + testImplementation 'org.powermock:powermock-core:2.0.2' + testImplementation 'org.powermock:powermock-module-junit4:2.0.2' + testImplementation 'org.powermock:powermock-api-mockito2:2.0.2' + testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' } apply plugin: 'com.google.gms.google-services' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 9cde3150..d78e3cec 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -29,8 +29,13 @@ # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* -# Picasso --dontwarn com.squareup.okhttp.** +#Glide +-keep public class * implements com.bumptech.glide.module.GlideModule +-keep public class * extends com.bumptech.glide.module.AppGlideModule +-keep public enum com.bumptech.glide.load.ImageHeaderParser$** { + **[] $VALUES; + public *; +} # Android-Iconics (fontawesome-typeface) -keep class .R diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd302031..e36ad051 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -17,7 +18,10 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:requestLegacyExternalStorage="true" + android:networkSecurityConfig="@xml/network_security_config" + android:theme="@style/AppTheme" + tools:ignore="UnusedAttribute"> @@ -67,6 +71,7 @@ android:name=".activities.LoginActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:launchMode="singleTop" + tools:ignore="LockedOrientationActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="adjustPan" /> diff --git a/app/src/main/assets/apache_libraries.html b/app/src/main/assets/apache_libraries.html index 911a8e50..ef777771 100644 --- a/app/src/main/assets/apache_libraries.html +++ b/app/src/main/assets/apache_libraries.html @@ -1,48 +1,12 @@ + + + - - - - - + diff --git a/app/src/main/assets/epl_libraries.html b/app/src/main/assets/epl_libraries.html new file mode 100644 index 00000000..23802d2c --- /dev/null +++ b/app/src/main/assets/epl_libraries.html @@ -0,0 +1,229 @@ + + + + + + + + + +
+

Eclipse Public License v1.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.
+
+ + + diff --git a/app/src/main/assets/libraries_style.css b/app/src/main/assets/libraries_style.css new file mode 100644 index 00000000..39372a93 --- /dev/null +++ b/app/src/main/assets/libraries_style.css @@ -0,0 +1,28 @@ +body { + font-family: sans-serif; + background-color: #333333; +} + +pre { + background-color: #3C3C3C; + color: #757575; + padding: 1em; + margin-left: 1em; + margin-right: 1em; + white-space: pre-wrap; + word-wrap: break-word; +} + +h4, h5 { + display: inline; + padding: 1em; +} + +a, h4, h5 { + color: #26A69A; + word-wrap: break-word; +} + +li { + color: #26A69A; +} \ No newline at end of file diff --git a/app/src/main/assets/mit_libraries.html b/app/src/main/assets/mit_libraries.html index e5681966..cd30b2cb 100644 --- a/app/src/main/assets/mit_libraries.html +++ b/app/src/main/assets/mit_libraries.html @@ -1,52 +1,22 @@ - - + diff --git a/app/src/main/assets/other_libraries.html b/app/src/main/assets/other_libraries.html new file mode 100644 index 00000000..59b89569 --- /dev/null +++ b/app/src/main/assets/other_libraries.html @@ -0,0 +1,114 @@ + + + + + + + + + +
+

Glide License

+
+License for everything not in third_party and not otherwise marked:
+
+Copyright 2014 Google, Inc. 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.
+
+THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``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 GOOGLE, INC. 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 views and conclusions contained in the software and documentation are those of the
+authors and should not be interpreted as representing official policies, either expressed
+or implied, of Google, Inc.
+---------------------------------------------------------------------------------------------
+License for third_party/disklrucache:
+
+Copyright 2012 Jake Wharton
+Copyright 2011 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+---------------------------------------------------------------------------------------------
+License for third_party/gif_decoder:
+
+Copyright (c) 2013 Xcellent Creations, Inc.
+
+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.
+---------------------------------------------------------------------------------------------
+License for third_party/gif_encoder/AnimatedGifEncoder.java and
+third_party/gif_encoder/LZWEncoder.java:
+
+No copyright asserted on the source code of this class. May be used for any
+purpose, however, refer to the Unisys LZW patent for restrictions on use of
+the associated LZWEncoder class. Please forward any corrections to
+kweiner@fmsware.com.
+
+-----------------------------------------------------------------------------
+License for third_party/gif_encoder/NeuQuant.java
+
+Copyright (c) 1994 Anthony Dekker
+
+NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
+"Kohonen neural networks for optimal colour quantization" in "Network:
+Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
+the algorithm.
+
+Any party obtaining a copy of these files from the author, directly or
+indirectly, is granted, free of charge, a full and unrestricted irrevocable,
+world-wide, paid up, royalty-free, nonexclusive right and license to deal in
+this software and documentation files (the "Software"), including without
+limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons who
+receive copies from any such party to do so, with the only requirement being
+that this copyright notice remain intact.
+
+ + + diff --git a/app/src/main/assets/style.css b/app/src/main/assets/style.css index 7415c141..f2b8c557 100644 --- a/app/src/main/assets/style.css +++ b/app/src/main/assets/style.css @@ -537,4 +537,12 @@ img color: #a51111 !important; } +span[style="background-color: yellow;"] +{ + color: black !important; +} +[style="color: white;"] > span[style="background-color: yellow;"] +{ + color: white !important; +} diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 00000000..a2c59929 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java index 49e9dc8c..8ff6dfe5 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java @@ -1,7 +1,9 @@ package gr.thmmy.mthmmy.activities; +import android.annotation.SuppressLint; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.text.SpannableString; @@ -26,6 +28,7 @@ import gr.thmmy.mthmmy.BuildConfig; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.base.BaseActivity; import gr.thmmy.mthmmy.base.BaseApplication; +import gr.thmmy.mthmmy.utils.io.AssetUtils; public class AboutActivity extends BaseActivity { private static final int TIME_INTERVAL = 1000; @@ -39,6 +42,7 @@ public class AboutActivity extends BaseActivity { private AlertDialog alertDialog; private FrameLayout easterEggImage; + @SuppressWarnings("ConstantConditions") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -134,29 +138,41 @@ public class AboutActivity extends BaseActivity { hideEasterEgg(); } - public void displayApacheLibraries(View v) { - LayoutInflater inflater = LayoutInflater.from(this); - WebView webView = (WebView) inflater.inflate(R.layout.dialog_licenses, coordinatorLayout, false); - webView.loadUrl("file:///android_asset/apache_libraries.html"); - int width = (int) (getResources().getDisplayMetrics().widthPixels * 0.95); - int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.95); - alertDialog = new AlertDialog.Builder(this, R.style.AppTheme_Dark_Dialog) - .setTitle(getString(R.string.apache_v2_0_libraries)) - .setView(webView) - .setPositiveButton(android.R.string.ok, null) - .show(); - if(alertDialog.getWindow()!=null) - alertDialog.getWindow().setLayout(width, height); - } + public void displayLibraries(View v) { + String libraryType = v.getTag().toString(); + String title="", fileName=""; + switch(libraryType) { + case "APACHE": + title=getString(R.string.apache_v2_0_libraries); + fileName="apache_libraries.html"; + break; + case "MIT": + title=getString(R.string.the_mit_libraries); + fileName="mit_libraries.html"; + break; + case "EPL": + title=getString(R.string.epl_libraries); + fileName="epl_libraries.html"; + break; + case "OTHER": + title=getString(R.string.other_libraries); + fileName="other_libraries.html"; + break; + default: + break; + } + + String htmlContent = AssetUtils.readFileToText(this,fileName); - public void displayMITLibraries(View v) { LayoutInflater inflater = LayoutInflater.from(this); WebView webView = (WebView) inflater.inflate(R.layout.dialog_licenses, coordinatorLayout, false); - webView.loadUrl("file:///android_asset/mit_libraries.html"); + webView.setBackgroundColor(Color.argb(1, 255, 255, 255)); + webView.loadDataWithBaseURL("file:///android_asset/", htmlContent, "text/html", "UTF-8", null); + int width = (int) (getResources().getDisplayMetrics().widthPixels * 0.95); int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.95); alertDialog = new AlertDialog.Builder(this, R.style.AppTheme_Dark_Dialog) - .setTitle(getString(R.string.the_mit_libraries)) + .setTitle(title) .setView(webView) .setPositiveButton(android.R.string.ok, null) .show(); @@ -164,9 +180,10 @@ public class AboutActivity extends BaseActivity { alertDialog.getWindow().setLayout(width, height); } + @SuppressLint("SourceLockedOrientationActivity") private void showEasterEgg(){ if(getResources().getConfiguration().orientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //TODO: why? appBar.setVisibility(View.INVISIBLE); mainContent.setVisibility(View.INVISIBLE); easterEggImage.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java index 6f3cea60..87e7d27b 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java @@ -21,6 +21,8 @@ import org.jsoup.select.Elements; import java.util.ArrayList; import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.activities.LoginActivity; @@ -96,7 +98,9 @@ public class BoardActivity extends BaseActivity implements BoardAdapter.OnLoadMo } thisPageBookmark = new Bookmark(boardTitle, ThmmyPage.getBoardId(boardUrl), true); - setBoardBookmark(findViewById(R.id.bookmark)); + if (boardTitle != null && !Objects.equals(boardTitle, "")) + setBoardBookmark(findViewById(R.id.bookmark)); + createDrawer(); progressBar = findViewById(R.id.progressBar); @@ -156,9 +160,9 @@ public class BoardActivity extends BaseActivity implements BoardAdapter.OnLoadMo @Override public void onLoadMore() { - if (pagesLoaded < numberOfPages && parsedTopics.get(parsedTopics.size() - 1) != null) { + if (pagesLoaded < numberOfPages && !parsedTopics.isEmpty() && parsedTopics.get(parsedTopics.size() - 1) != null) { parsedTopics.add(null); - boardAdapter.notifyItemInserted(parsedSubBoards.size() + parsedTopics.size()); + boardAdapter.notifyItemInserted(parsedSubBoards.size() + parsedTopics.size()); // This gets a warning and should be changed //Load data boardTask = new BoardTask(); @@ -275,7 +279,7 @@ public class BoardActivity extends BaseActivity implements BoardAdapter.OnLoadMo if (topicRows != null && !topicRows.isEmpty()) { for (Element topicRow : topicRows) { if (!Objects.equals(topicRow.className(), "titlebg")) { - String pTopicUrl, pSubject, pStartedBy, pLastPost, pLastPostUrl, pStats; + String pTopicUrl, pSubject, pStarter, pLastUser="", pLastPostDateTime="00:00:00", pLastPost, pLastPostUrl, pStats; boolean pLocked = false, pSticky = false, pUnread = false; Elements topicColumns = topicRow.select(">td"); { @@ -290,21 +294,21 @@ public class BoardActivity extends BaseActivity implements BoardAdapter.OnLoadMo if (column.select("a[id^=newicon]").first() != null) pUnread = true; } - pStartedBy = topicColumns.get(3).text(); + pStarter = topicColumns.get(3).text(); pStats = "Replies: " + topicColumns.get(4).text() + ", Views: " + topicColumns.get(5).text(); pLastPost = topicColumns.last().text(); - if (pLastPost.contains("by")) { - pLastPost = pLastPost.substring(0, pLastPost.indexOf("by")) + - "\n" + pLastPost.substring(pLastPost.indexOf("by")); - } else if (pLastPost.contains("από")) { - pLastPost = pLastPost.substring(0, pLastPost.indexOf("από")) + - "\n" + pLastPost.substring(pLastPost.indexOf("από")); - } else { - Timber.wtf("Board parsing about to fail. pLastPost came with: %s", pLastPost); + Pattern pattern = Pattern.compile("(.+)\\s(by|από)\\s(.+)$"); + Matcher matcher = pattern.matcher(pLastPost); + if (matcher.find()){ + pLastPostDateTime = matcher.group(1); + pLastUser = matcher.group(3); } + else + throw new ParseException("Parsing failed (pLastPost came with: \"" + pLastPost + "\")"); + pLastPostUrl = topicColumns.last().select("a:has(img)").first().attr("href"); - tempTopics.add(new Topic(pTopicUrl, pSubject, pStartedBy, pLastPost, pLastPostUrl, + tempTopics.add(new Topic(pTopicUrl, pSubject, pStarter, pLastUser, pLastPostDateTime, pLastPostUrl, pStats, pLocked, pSticky, pUnread)); } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardAdapter.java index 2e864229..f9093cf8 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardAdapter.java @@ -39,8 +39,8 @@ class BoardAdapter extends RecyclerView.Adapter { private final int VIEW_TYPE_LOADING = 4; private final Context context; - private ArrayList parsedSubBoards = new ArrayList<>(); - private ArrayList parsedTopics = new ArrayList<>(); + private ArrayList parsedSubBoards; + private ArrayList parsedTopics; private final ArrayList boardExpandableVisibility = new ArrayList<>(); private final ArrayList topicExpandableVisibility = new ArrayList<>(); @@ -187,7 +187,7 @@ class BoardAdapter extends RecyclerView.Adapter { topicViewHolder.topicRow.setOnClickListener(view -> { Intent intent = new Intent(context, TopicActivity.class); Bundle extras = new Bundle(); - extras.putString(BUNDLE_TOPIC_URL, topic.getUrl()); + extras.putString(BUNDLE_TOPIC_URL, topic.getTopicUrl()); extras.putString(BUNDLE_TOPIC_TITLE, topic.getSubject()); intent.putExtras(extras); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); @@ -232,7 +232,7 @@ class BoardAdapter extends RecyclerView.Adapter { topicViewHolder.topicSubject.setText(lockedSticky); topicViewHolder.topicStartedBy.setText(context.getString(R.string.topic_started_by, topic.getStarter())); topicViewHolder.topicStats.setText(topic.getStats()); - topicViewHolder.topicLastPost.setText(context.getString(R.string.topic_last_post, topic.getLastPostDateAndTime())); + topicViewHolder.topicLastPost.setText(context.getString(R.string.topic_last_post, topic.getLastPostDateTime(), topic.getLastUser())); topicViewHolder.topicLastPost.setOnClickListener(view -> { Intent intent = new Intent(context, TopicActivity.class); Bundle extras = new Bundle(); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksActivity.java index 3a00881c..ef2b79b6 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksActivity.java @@ -29,6 +29,9 @@ import static gr.thmmy.mthmmy.activities.topic.TopicActivity.BUNDLE_TOPIC_URL; //TODO proper handling with adapter etc. //TODO after clicking bookmark and then back button should return to this activity public class BookmarksActivity extends BaseActivity { + private static final String TOPIC_URL = "https://www.thmmy.gr/smf/index.php?topic="; + private static final String BOARD_URL = "https://www.thmmy.gr/smf/index.php?board="; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -48,8 +51,8 @@ public class BookmarksActivity extends BaseActivity { //Creates the adapter that will return a fragment for each section of the activity SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - sectionsPagerAdapter.addFragment(BookmarksTopicFragment.newInstance(1, Bookmark.arrayListToString(getTopicsBookmarked())), "Topics"); - sectionsPagerAdapter.addFragment(BookmarksBoardFragment.newInstance(2, Bookmark.arrayListToString(getBoardsBookmarked())), "Boards"); + sectionsPagerAdapter.addFragment(BookmarksFragment.newInstance(1, Bookmark.arrayListToString(getTopicsBookmarked()), BookmarksFragment.Type.TOPIC), "Topics"); + sectionsPagerAdapter.addFragment(BookmarksFragment.newInstance(2, Bookmark.arrayListToString(getBoardsBookmarked()), BookmarksFragment.Type.BOARD), "Boards"); //Sets up the ViewPager with the sections adapter. ViewPager viewPager = findViewById(R.id.bookmarks_container); @@ -65,44 +68,57 @@ public class BookmarksActivity extends BaseActivity { super.onResume(); } - public boolean onTopicInteractionListener(String interactionType, Bookmark bookmarkedTopic) { + public boolean onFragmentRowInteractionListener(BookmarksFragment.Type type, String interactionType, Bookmark bookmark) { + if(type== BookmarksFragment.Type.TOPIC) + return onTopicInteractionListener(interactionType, bookmark); + else if (type==BookmarksFragment.Type.BOARD) + return onBoardInteractionListener(interactionType, bookmark); + + return false; + } + + private boolean onTopicInteractionListener(String interactionType, Bookmark bookmarkedTopic) { switch (interactionType) { - case BookmarksTopicFragment.INTERACTION_CLICK_TOPIC_BOOKMARK: + case BookmarksFragment.INTERACTION_CLICK_TOPIC_BOOKMARK: Intent intent = new Intent(BookmarksActivity.this, TopicActivity.class); Bundle extras = new Bundle(); - extras.putString(BUNDLE_TOPIC_URL, "https://www.thmmy.gr/smf/index.php?topic=" + extras.putString(BUNDLE_TOPIC_URL, TOPIC_URL + bookmarkedTopic.getId() + "." + 2147483647); extras.putString(BUNDLE_TOPIC_TITLE, bookmarkedTopic.getTitle()); intent.putExtras(extras); startActivity(intent); break; - case BookmarksTopicFragment.INTERACTION_TOGGLE_TOPIC_NOTIFICATION: + case BookmarksFragment.INTERACTION_TOGGLE_TOPIC_NOTIFICATION: return toggleNotification(bookmarkedTopic); - case BookmarksTopicFragment.INTERACTION_REMOVE_TOPIC_BOOKMARK: + case BookmarksFragment.INTERACTION_REMOVE_TOPIC_BOOKMARK: removeBookmark(bookmarkedTopic); Toast.makeText(BookmarksActivity.this, "Bookmark removed", Toast.LENGTH_SHORT).show(); break; + default: + break; } return true; } - public boolean onBoardInteractionListener(String interactionType, Bookmark bookmarkedBoard) { + private boolean onBoardInteractionListener(String interactionType, Bookmark bookmarkedBoard) { switch (interactionType) { - case BookmarksBoardFragment.INTERACTION_CLICK_BOARD_BOOKMARK: + case BookmarksFragment.INTERACTION_CLICK_BOARD_BOOKMARK: Intent intent = new Intent(BookmarksActivity.this, BoardActivity.class); Bundle extras = new Bundle(); - extras.putString(BUNDLE_BOARD_URL, "https://www.thmmy.gr/smf/index.php?board=" + extras.putString(BUNDLE_BOARD_URL, BOARD_URL + bookmarkedBoard.getId() + ".0"); extras.putString(BUNDLE_BOARD_TITLE, bookmarkedBoard.getTitle()); intent.putExtras(extras); startActivity(intent); break; - case BookmarksBoardFragment.INTERACTION_TOGGLE_BOARD_NOTIFICATION: + case BookmarksFragment.INTERACTION_TOGGLE_BOARD_NOTIFICATION: return toggleNotification(bookmarkedBoard); - case BookmarksBoardFragment.INTERACTION_REMOVE_BOARD_BOOKMARK: + case BookmarksFragment.INTERACTION_REMOVE_BOARD_BOOKMARK: removeBookmark(bookmarkedBoard); Toast.makeText(BookmarksActivity.this, "Bookmark removed", Toast.LENGTH_SHORT).show(); break; + default: + break; } return true; } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksBoardFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksFragment.java similarity index 56% rename from app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksBoardFragment.java rename to app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksFragment.java index 814586ea..23562e0d 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksBoardFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksFragment.java @@ -1,7 +1,6 @@ package gr.thmmy.mthmmy.activities.bookmarks; import android.app.Activity; -import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; @@ -21,38 +20,55 @@ import java.util.ArrayList; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.model.Bookmark; -/** - * A {@link Fragment} subclass. - * Use the {@link BookmarksBoardFragment#newInstance} factory method to - * create an instance of this fragment. - */ -public class BookmarksBoardFragment extends Fragment { +public class BookmarksFragment extends Fragment { + enum Type {TOPIC, BOARD} private static final String ARG_SECTION_NUMBER = "SECTION_NUMBER"; - private static final String ARG_BOARD_BOOKMARKS = "BOARD_BOOKMARKS"; + private static final String ARG_BOOKMARKS = "BOOKMARKS"; + + static final String INTERACTION_CLICK_TOPIC_BOOKMARK = "CLICK_TOPIC_BOOKMARK"; + static final String INTERACTION_TOGGLE_TOPIC_NOTIFICATION = "TOGGLE_TOPIC_NOTIFICATION"; + static final String INTERACTION_REMOVE_TOPIC_BOOKMARK = "REMOVE_TOPIC_BOOKMARK"; static final String INTERACTION_CLICK_BOARD_BOOKMARK = "CLICK_BOARD_BOOKMARK"; static final String INTERACTION_TOGGLE_BOARD_NOTIFICATION = "TOGGLE_BOARD_NOTIFICATION"; static final String INTERACTION_REMOVE_BOARD_BOOKMARK= "REMOVE_BOARD_BOOKMARK"; - private ArrayList boardBookmarks = null; + private TextView nothingBookmarkedTextView; + + private ArrayList bookmarks = null; + private Type type; + private String interactionClick, interactionToggle, interactionRemove; - private static Drawable notificationsEnabledButtonImage; - private static Drawable notificationsDisabledButtonImage; + private Drawable notificationsEnabledButtonImage; + private Drawable notificationsDisabledButtonImage; - // Required empty public constructor - public BookmarksBoardFragment() { } + public BookmarksFragment() {/* Required empty public constructor */} + + private BookmarksFragment(Type type) { + this.type=type; + if(type==Type.TOPIC){ + this.interactionClick=INTERACTION_CLICK_TOPIC_BOOKMARK; + this.interactionToggle=INTERACTION_TOGGLE_TOPIC_NOTIFICATION; + this.interactionRemove=INTERACTION_REMOVE_TOPIC_BOOKMARK; + } + else if (type==Type.BOARD){ + this.interactionClick=INTERACTION_CLICK_BOARD_BOOKMARK; + this.interactionToggle=INTERACTION_TOGGLE_BOARD_NOTIFICATION; + this.interactionRemove=INTERACTION_REMOVE_BOARD_BOOKMARK; + } + } /** * Use ONLY this factory method to create a new instance of - * this fragment using the provided parameters. + * the desired fragment using the provided parameters. * * @return A new instance of fragment Forum. */ - public static BookmarksBoardFragment newInstance(int sectionNumber, String boardBookmarks) { - BookmarksBoardFragment fragment = new BookmarksBoardFragment(); + protected static BookmarksFragment newInstance(int sectionNumber, String bookmarks, Type type) { + BookmarksFragment fragment = new BookmarksFragment(type); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); - args.putString(ARG_BOARD_BOOKMARKS, boardBookmarks); + args.putString(ARG_BOOKMARKS, bookmarks); fragment.setArguments(args); return fragment; } @@ -61,9 +77,9 @@ public class BookmarksBoardFragment extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { - String bundledBoardBookmarks = getArguments().getString(ARG_BOARD_BOOKMARKS); - if (bundledBoardBookmarks != null) { - boardBookmarks = Bookmark.stringToArrayList(bundledBoardBookmarks); + String bundledBookmarks = getArguments().getString(ARG_BOOKMARKS); + if (bundledBookmarks != null) { + bookmarks = Bookmark.stringToArrayList(bundledBookmarks); } } @@ -83,74 +99,68 @@ public class BookmarksBoardFragment extends Fragment { Bundle savedInstanceState) { // Inflates the layout for this fragment final View rootView = layoutInflater.inflate(R.layout.fragment_bookmarks, container, false); - //bookmarks_board_container + //bookmarks container final LinearLayout bookmarksLinearView = rootView.findViewById(R.id.bookmarks_container); + nothingBookmarkedTextView = rootView.findViewById(R.id.nothing_bookmarked); - if(this.boardBookmarks != null && !this.boardBookmarks.isEmpty()) { - for (final Bookmark bookmarkedBoard : boardBookmarks) { - if (bookmarkedBoard != null && bookmarkedBoard.getTitle() != null) { + if(this.bookmarks != null && !this.bookmarks.isEmpty()) { + hideNothingBookmarked(); + for (final Bookmark bookmark : bookmarks) { + if (bookmark != null && bookmark.getTitle() != null) { final LinearLayout row = (LinearLayout) layoutInflater.inflate( R.layout.fragment_bookmarks_row, bookmarksLinearView, false); row.setOnClickListener(view -> { Activity activity = getActivity(); - if (activity instanceof BookmarksActivity){ - ((BookmarksActivity) activity).onBoardInteractionListener(INTERACTION_CLICK_BOARD_BOOKMARK, bookmarkedBoard); - } + if (activity instanceof BookmarksActivity) + ((BookmarksActivity) activity).onFragmentRowInteractionListener(type, interactionClick, bookmark); }); - ((TextView) row.findViewById(R.id.bookmark_title)).setText(bookmarkedBoard.getTitle()); + ((TextView) row.findViewById(R.id.bookmark_title)).setText(bookmark.getTitle()); final ImageButton notificationsEnabledButton = row.findViewById(R.id.toggle_notification); - if (!bookmarkedBoard.isNotificationsEnabled()) { + if (!bookmark.isNotificationsEnabled()) { notificationsEnabledButton.setImageDrawable(notificationsDisabledButtonImage); } notificationsEnabledButton.setOnClickListener(view -> { Activity activity = getActivity(); if (activity instanceof BookmarksActivity) { - if (((BookmarksActivity) activity).onBoardInteractionListener(INTERACTION_TOGGLE_BOARD_NOTIFICATION, bookmarkedBoard)) { + if (((BookmarksActivity) activity).onFragmentRowInteractionListener(type, interactionToggle, bookmark)) notificationsEnabledButton.setImageDrawable(notificationsEnabledButtonImage); - } else { + else notificationsEnabledButton.setImageDrawable(notificationsDisabledButtonImage); - } } }); (row.findViewById(R.id.remove_bookmark)).setOnClickListener(view -> { Activity activity = getActivity(); if (activity instanceof BookmarksActivity){ - ((BookmarksActivity) activity).onBoardInteractionListener(INTERACTION_REMOVE_BOARD_BOOKMARK, bookmarkedBoard); - boardBookmarks.remove(bookmarkedBoard); + ((BookmarksActivity) activity).onFragmentRowInteractionListener(type, interactionRemove, bookmark); + bookmarks.remove(bookmark); } row.setVisibility(View.GONE); - if (boardBookmarks.isEmpty()){ - bookmarksLinearView.addView(bookmarksListEmptyMessage()); + if (bookmarks.isEmpty()){ + showNothingBookmarked(); } }); bookmarksLinearView.addView(row); } } } else - bookmarksLinearView.addView(bookmarksListEmptyMessage()); + showNothingBookmarked(); return rootView; } - private TextView bookmarksListEmptyMessage() { - TextView emptyBookmarksCategory = new TextView(this.getContext()); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); - params.setMargins(0, 12, 0, 0); - emptyBookmarksCategory.setLayoutParams(params); - emptyBookmarksCategory.setText(getString(R.string.empty_board_bookmarks)); - emptyBookmarksCategory.setTypeface(emptyBookmarksCategory.getTypeface(), Typeface.BOLD); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) - emptyBookmarksCategory.setTextColor(this.getContext().getColor(R.color.primary_text)); - else { - //noinspection deprecation - emptyBookmarksCategory.setTextColor(this.getContext().getResources().getColor(R.color.primary_text)); - } - emptyBookmarksCategory.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); - return emptyBookmarksCategory; + + private void showNothingBookmarked() { + if(nothingBookmarkedTextView!=null) + nothingBookmarkedTextView.setVisibility(View.VISIBLE); } + + private void hideNothingBookmarked(){ + if(nothingBookmarkedTextView!=null) + nothingBookmarkedTextView.setVisibility(View.INVISIBLE); + } + } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksTopicFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksTopicFragment.java deleted file mode 100644 index e9081fbd..00000000 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/bookmarks/BookmarksTopicFragment.java +++ /dev/null @@ -1,158 +0,0 @@ -package gr.thmmy.mthmmy.activities.bookmarks; - -import android.app.Activity; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageButton; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; - -import java.util.ArrayList; - -import gr.thmmy.mthmmy.R; -import gr.thmmy.mthmmy.model.Bookmark; - -/** - * A {@link Fragment} subclass. - * Use the {@link BookmarksTopicFragment#newInstance} factory method to - * create an instance of this fragment. - */ -public class BookmarksTopicFragment extends Fragment { - private static final String ARG_SECTION_NUMBER = "SECTION_NUMBER"; - private static final String ARG_TOPIC_BOOKMARKS = "TOPIC_BOOKMARKS"; - - static final String INTERACTION_CLICK_TOPIC_BOOKMARK = "CLICK_TOPIC_BOOKMARK"; - static final String INTERACTION_TOGGLE_TOPIC_NOTIFICATION = "TOGGLE_TOPIC_NOTIFICATION"; - static final String INTERACTION_REMOVE_TOPIC_BOOKMARK = "REMOVE_TOPIC_BOOKMARK"; - - ArrayList topicBookmarks = null; - - private static Drawable notificationsEnabledButtonImage; - private static Drawable notificationsDisabledButtonImage; - - // Required empty public constructor - public BookmarksTopicFragment() { - } - - /** - * Use ONLY this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @return A new instance of fragment Forum. - */ - public static BookmarksTopicFragment newInstance(int sectionNumber, String topicBookmarks) { - BookmarksTopicFragment fragment = new BookmarksTopicFragment(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, sectionNumber); - args.putString(ARG_TOPIC_BOOKMARKS, topicBookmarks); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - String bundledTopicBookmarks = getArguments().getString(ARG_TOPIC_BOOKMARKS); - if (bundledTopicBookmarks != null) { - topicBookmarks = Bookmark.stringToArrayList(bundledTopicBookmarks); - } - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - notificationsEnabledButtonImage = getResources().getDrawable(R.drawable.ic_notification_on, null); - else - notificationsEnabledButtonImage = VectorDrawableCompat.create(getResources(), R.drawable.ic_notification_on, null); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - notificationsDisabledButtonImage = getResources().getDrawable(R.drawable.ic_notification_off, null); - else - notificationsDisabledButtonImage = VectorDrawableCompat.create(getResources(), R.drawable.ic_notification_off, null); - } - - @Override - public View onCreateView(@NonNull LayoutInflater layoutInflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflates the layout for this fragment - final View rootView = layoutInflater.inflate(R.layout.fragment_bookmarks, container, false); - //bookmarks_topic_container - final LinearLayout bookmarksLinearView = rootView.findViewById(R.id.bookmarks_container); - - if(this.topicBookmarks != null && !this.topicBookmarks.isEmpty()) { - for (final Bookmark bookmarkedTopic : topicBookmarks) { - if (bookmarkedTopic != null && bookmarkedTopic.getTitle() != null) { - final LinearLayout row = (LinearLayout) layoutInflater.inflate( - R.layout.fragment_bookmarks_row, bookmarksLinearView, false); - row.setOnClickListener(view -> { - Activity activity = getActivity(); - if (activity instanceof BookmarksActivity) { - ((BookmarksActivity) activity).onTopicInteractionListener(INTERACTION_CLICK_TOPIC_BOOKMARK, bookmarkedTopic); - } - }); - ((TextView) row.findViewById(R.id.bookmark_title)).setText(bookmarkedTopic.getTitle()); - - final ImageButton notificationsEnabledButton = row.findViewById(R.id.toggle_notification); - if (!bookmarkedTopic.isNotificationsEnabled()) { - notificationsEnabledButton.setImageDrawable(notificationsDisabledButtonImage); - } - - notificationsEnabledButton.setOnClickListener(view -> { - Activity activity = getActivity(); - if (activity instanceof BookmarksActivity) { - if (((BookmarksActivity) activity).onTopicInteractionListener(INTERACTION_TOGGLE_TOPIC_NOTIFICATION, bookmarkedTopic)) { - notificationsEnabledButton.setImageDrawable(notificationsEnabledButtonImage); - } else { - notificationsEnabledButton.setImageDrawable(notificationsDisabledButtonImage); - } - } - }); - (row.findViewById(R.id.remove_bookmark)).setOnClickListener(view -> { - Activity activity = getActivity(); - if (activity instanceof BookmarksActivity) { - ((BookmarksActivity) activity).onTopicInteractionListener(INTERACTION_REMOVE_TOPIC_BOOKMARK, bookmarkedTopic); - topicBookmarks.remove(bookmarkedTopic); - } - row.setVisibility(View.GONE); - - if (topicBookmarks.isEmpty()){ - bookmarksLinearView.addView(bookmarksListEmptyMessage()); - } - }); - bookmarksLinearView.addView(row); - } - } - } else { - bookmarksLinearView.addView(bookmarksListEmptyMessage()); - } - - - return rootView; - } - - private TextView bookmarksListEmptyMessage() { - TextView emptyBookmarksCategory = new TextView(this.getContext()); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); - params.setMargins(0, 12, 0, 0); - emptyBookmarksCategory.setLayoutParams(params); - emptyBookmarksCategory.setText(getString(R.string.empty_topic_bookmarks)); - emptyBookmarksCategory.setTypeface(emptyBookmarksCategory.getTypeface(), Typeface.BOLD); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - emptyBookmarksCategory.setTextColor(this.getContext().getColor(R.color.primary_text)); - } else { - //noinspection deprecation - emptyBookmarksCategory.setTextColor(this.getContext().getResources().getColor(R.color.primary_text)); - } - emptyBookmarksCategory.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); - return emptyBookmarksCategory; - } -} diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/create_content/CreateContentActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/create_content/CreateContentActivity.java index 920a03b9..29b0c699 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/create_content/CreateContentActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/create_content/CreateContentActivity.java @@ -15,9 +15,9 @@ import com.google.android.material.textfield.TextInputLayout; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.activities.settings.SettingsActivity; import gr.thmmy.mthmmy.base.BaseActivity; -import gr.thmmy.mthmmy.editorview.EditorView; -import gr.thmmy.mthmmy.editorview.EmojiKeyboard; import gr.thmmy.mthmmy.session.SessionManager; +import gr.thmmy.mthmmy.views.editorview.EditorView; +import gr.thmmy.mthmmy.views.editorview.EmojiKeyboard; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import timber.log.Timber; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsActivity.java index 95e0334c..2bb96af2 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsActivity.java @@ -159,7 +159,7 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. public void onLoadMore() { if (pagesLoaded < numberOfPages) { parsedDownloads.add(null); - downloadsAdapter.notifyItemInserted(parsedDownloads.size()); + downloadsAdapter.notifyItemInserted(parsedDownloads.size()); //This gets a warning - change it! //Load data parseDownloadPageTask = new ParseDownloadPageTask(); @@ -287,7 +287,7 @@ public class DownloadsActivity extends BaseActivity implements DownloadsAdapter. OkHttpClient client = BaseApplication.getInstance().getClient(); String fileName = null; try { - Response response = client.newCall(new Request.Builder().url(download.getUrl()).build()).execute(); + Response response = client.newCall(new Request.Builder().url(download.getUrl()).head().build()).execute(); String contentDisposition = response.headers("Content-Disposition").toString(); //check if link provides an attachment if (contentDisposition.contains("attachment")) fileName = contentDisposition.split("\"")[1]; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsAdapter.java index d5ca46ad..63a2c8a8 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/downloads/DownloadsAdapter.java @@ -34,7 +34,7 @@ class DownloadsAdapter extends RecyclerView.Adapter { private final int VIEW_TYPE_LOADING = 1; private final Context context; - private ArrayList parsedDownloads = new ArrayList<>(); + private ArrayList parsedDownloads; private final ArrayList downloadExpandableVisibility = new ArrayList<>(); DownloadsAdapter(Context context, ArrayList parsedDownloads) { @@ -77,17 +77,14 @@ class DownloadsAdapter extends RecyclerView.Adapter { } if (download.getType() == Download.DownloadItemType.DOWNLOADS_CATEGORY) { - downloadViewHolder.downloadRow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(context, DownloadsActivity.class); - Bundle extras = new Bundle(); - extras.putString(BUNDLE_DOWNLOADS_URL, download.getUrl()); - extras.putString(BUNDLE_DOWNLOADS_TITLE, download.getTitle()); - intent.putExtras(extras); - intent.setFlags(FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } + downloadViewHolder.downloadRow.setOnClickListener(view -> { + Intent intent = new Intent(context, DownloadsActivity.class); + Bundle extras = new Bundle(); + extras.putString(BUNDLE_DOWNLOADS_URL, download.getUrl()); + extras.putString(BUNDLE_DOWNLOADS_TITLE, download.getTitle()); + intent.putExtras(extras); + intent.setFlags(FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); }); if (downloadExpandableVisibility.get(downloadViewHolder.getAdapterPosition())) { @@ -97,20 +94,17 @@ class DownloadsAdapter extends RecyclerView.Adapter { downloadViewHolder.informationExpandable.setVisibility(View.GONE); downloadViewHolder.informationExpandableBtn.setImageResource(R.drawable.ic_arrow_drop_down_accent_24dp); } - downloadViewHolder.informationExpandableBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - final boolean visible = downloadExpandableVisibility.get(downloadViewHolder. - getAdapterPosition()); - if (visible) { - downloadViewHolder.informationExpandable.setVisibility(View.GONE); - downloadViewHolder.informationExpandableBtn.setImageResource(R.drawable.ic_arrow_drop_down_accent_24dp); - } else { - downloadViewHolder.informationExpandable.setVisibility(View.VISIBLE); - downloadViewHolder.informationExpandableBtn.setImageResource(R.drawable.ic_arrow_drop_up_accent_24dp); - } - downloadExpandableVisibility.set(downloadViewHolder.getAdapterPosition(), !visible); + downloadViewHolder.informationExpandableBtn.setOnClickListener(view -> { + final boolean visible = downloadExpandableVisibility.get(downloadViewHolder. + getAdapterPosition()); + if (visible) { + downloadViewHolder.informationExpandable.setVisibility(View.GONE); + downloadViewHolder.informationExpandableBtn.setImageResource(R.drawable.ic_arrow_drop_down_accent_24dp); + } else { + downloadViewHolder.informationExpandable.setVisibility(View.VISIBLE); + downloadViewHolder.informationExpandableBtn.setImageResource(R.drawable.ic_arrow_drop_up_accent_24dp); } + downloadExpandableVisibility.set(downloadViewHolder.getAdapterPosition(), !visible); }); downloadViewHolder.title.setTypeface(Typeface.createFromAsset(context.getAssets() , "fonts/fontawesome-webfont.ttf")); @@ -124,15 +118,12 @@ class DownloadsAdapter extends RecyclerView.Adapter { downloadViewHolder.title.setText(tmp); } } else { - downloadViewHolder.downloadRow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - ((BaseActivity) context).downloadFile(new ThmmyFile( - new URL(download.getUrl()), download.getFileName(), null)); - } catch (MalformedURLException e) { - e.printStackTrace(); - } + downloadViewHolder.downloadRow.setOnClickListener(view -> { + try { + ((BaseActivity) context).downloadFile(new ThmmyFile( + new URL(download.getUrl()), download.getFileName(), null)); + } catch (MalformedURLException e) { + e.printStackTrace(); } }); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/forum/ForumFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/forum/ForumFragment.java index f366f295..061db9d2 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/forum/ForumFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/forum/ForumFragment.java @@ -30,10 +30,10 @@ import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.Board; import gr.thmmy.mthmmy.model.Category; import gr.thmmy.mthmmy.session.SessionManager; -import gr.thmmy.mthmmy.utils.CustomRecyclerView; import gr.thmmy.mthmmy.utils.NetworkResultCodes; import gr.thmmy.mthmmy.utils.parsing.NewParseTask; import gr.thmmy.mthmmy.utils.parsing.ParseException; +import gr.thmmy.mthmmy.views.CustomRecyclerView; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; @@ -158,19 +158,24 @@ public class ForumFragment extends BaseFragment { @Override public void onDestroy() { super.onDestroy(); - if (forumTask != null && forumTask.getStatus() != AsyncTask.Status.RUNNING) - forumTask.cancel(true); + if (forumTask!=null){ + try{ + if(forumTask.isRunning()) + forumTask.cancel(true); + } // Yes, it happens even though we checked + catch (NullPointerException ignored){ } + } } public interface ForumFragmentInteractionListener extends FragmentInteractionListener { void onForumFragmentInteraction(Board board); } - public void onForumTaskStarted() { + private void onForumTaskStarted() { progressBar.setVisibility(ProgressBar.VISIBLE); } - public void onForumTaskFinished(int resultCode, ArrayList fetchedCategories) { + private void onForumTaskFinished(int resultCode, ArrayList fetchedCategories) { if (resultCode == NetworkResultCodes.SUCCESSFUL) { categories.clear(); categories.addAll(fetchedCategories); @@ -191,8 +196,8 @@ public class ForumFragment extends BaseFragment { private class ForumTask extends NewParseTask> { private HttpUrl forumUrl = SessionManager.forumUrl; //may change upon collapse/expand - public ForumTask(OnTaskStartedListener onTaskStartedListener, - OnNetworkTaskFinishedListener> onParseTaskFinishedListener) { + ForumTask(OnTaskStartedListener onTaskStartedListener, + OnNetworkTaskFinishedListener> onParseTaskFinishedListener) { super(onTaskStartedListener, onParseTaskFinishedListener); } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentAdapter.java index 15589d45..084c3a3a 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentAdapter.java @@ -1,6 +1,5 @@ package gr.thmmy.mthmmy.activities.main.recent; -import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,8 +11,11 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.TopicSummary; +import gr.thmmy.mthmmy.views.RelativeTimeTextView; +import timber.log.Timber; /** @@ -21,12 +23,10 @@ import gr.thmmy.mthmmy.model.TopicSummary; * specified {@link RecentFragment.RecentFragmentInteractionListener}. */ class RecentAdapter extends RecyclerView.Adapter { - private final Context context; private final List recentList; private final RecentFragment.RecentFragmentInteractionListener mListener; - RecentAdapter(Context context, @NonNull List topicSummaryList, BaseFragment.FragmentInteractionListener listener) { - this.context = context; + RecentAdapter(@NonNull List topicSummaryList, BaseFragment.FragmentInteractionListener listener) { this.recentList = topicSummaryList; mListener = (RecentFragment.RecentFragmentInteractionListener) listener; } @@ -42,23 +42,29 @@ class RecentAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(final ViewHolder holder, final int position) { - holder.mTitleView.setText(recentList.get(position).getSubject()); - holder.mDateTimeView.setText(recentList.get(position).getDateTimeModified()); - holder.mUserView.setText(recentList.get(position).getLastUser()); - - holder.topic = recentList.get(position); - - holder.mView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - if (null != mListener) { - // Notify the active callbacks interface (the activity, if the - // fragment is attached to one) that an item has been selected. - mListener.onRecentFragmentInteraction(holder.topic); //? + TopicSummary topicSummary = recentList.get(position); + holder.mTitleView.setText(topicSummary.getSubject()); + if(BaseApplication.getInstance().isDisplayRelativeTimeEnabled()){ + String timestamp = topicSummary.getLastPostTimestamp(); + try{ + holder.mDateTimeView.setReferenceTime(Long.valueOf(timestamp)); + } + catch(NumberFormatException e){ + Timber.e(e, "Invalid number format: %s", timestamp); + holder.mDateTimeView.setText(topicSummary.getLastPostSimplifiedDateTime()); + } + } + else + holder.mDateTimeView.setText(topicSummary.getLastPostSimplifiedDateTime()); - } + holder.mUserView.setText(topicSummary.getLastUser()); + holder.topic = topicSummary; + holder.mView.setOnClickListener(v -> { + if (null != mListener) { + // Notify the active callbacks interface (the activity, if the + // fragment is attached to one) that an item has been selected. + mListener.onRecentFragmentInteraction(holder.topic); //? } }); } @@ -72,7 +78,7 @@ class RecentAdapter extends RecyclerView.Adapter { final View mView; final TextView mTitleView; final TextView mUserView; - final TextView mDateTimeView; + final RelativeTimeTextView mDateTimeView; public TopicSummary topic; ViewHolder(View view) { diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java index 6e14b79b..5b27c570 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java @@ -26,10 +26,10 @@ import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.TopicSummary; import gr.thmmy.mthmmy.session.SessionManager; -import gr.thmmy.mthmmy.utils.CustomRecyclerView; import gr.thmmy.mthmmy.utils.NetworkResultCodes; import gr.thmmy.mthmmy.utils.parsing.NewParseTask; import gr.thmmy.mthmmy.utils.parsing.ParseException; +import gr.thmmy.mthmmy.views.CustomRecyclerView; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import okhttp3.Response; import timber.log.Timber; @@ -85,7 +85,6 @@ public class RecentFragment extends BaseFragment { if (topicSummaries.isEmpty()) { recentTask = new RecentTask(this::onRecentTaskStarted, this::onRecentTaskFinished); recentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.indexUrl.toString()); - } Timber.d("onActivityCreated"); } @@ -100,7 +99,7 @@ public class RecentFragment extends BaseFragment { // Set the adapter if (rootView instanceof RelativeLayout) { progressBar = rootView.findViewById(R.id.progressBar); - recentAdapter = new RecentAdapter(getActivity(), topicSummaries, fragmentInteractionListener); + recentAdapter = new RecentAdapter(topicSummaries, fragmentInteractionListener); CustomRecyclerView recyclerView = rootView.findViewById(R.id.list); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(recyclerView.getContext()); @@ -128,8 +127,13 @@ public class RecentFragment extends BaseFragment { @Override public void onDestroy() { super.onDestroy(); - if (recentTask.isRunning()) - recentTask.cancel(true); + if (recentTask!=null){ + try{ + if(recentTask.isRunning()) + recentTask.cancel(true); + } // Yes, it happens even though we checked + catch (NullPointerException ignored){ } + } } @@ -186,21 +190,11 @@ public class RecentFragment extends BaseFragment { String dateTime = recent.get(i + 2).text(); pattern = Pattern.compile("\\[(.*)]"); matcher = pattern.matcher(dateTime); - if (matcher.find()) { - dateTime = matcher.group(1); - if (dateTime.contains(" am") || dateTime.contains(" pm") || - dateTime.contains(" πμ") || dateTime.contains(" μμ")) { - dateTime = dateTime.replaceAll(":[0-5][0-9] ", " "); - } else { - dateTime = dateTime.substring(0, dateTime.lastIndexOf(":")); - } - if (!dateTime.contains(",")) { - dateTime = dateTime.replaceAll(".+? ([0-9])", "$1"); - } - } else + if (matcher.find()) + fetchedRecent.add(new TopicSummary(link, title, lastUser, matcher.group(1))); + else throw new ParseException("Parsing failed (dateTime)"); - fetchedRecent.add(new TopicSummary(link, title, lastUser, dateTime)); } return fetchedRecent; } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadAdapter.java index 3818145a..068f5e61 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadAdapter.java @@ -11,91 +11,59 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.TopicSummary; +import gr.thmmy.mthmmy.views.RelativeTimeTextView; +import timber.log.Timber; class UnreadAdapter extends RecyclerView.Adapter { private final List unreadList; private final UnreadFragment.UnreadFragmentInteractionListener mListener; - private final MarkReadInteractionListener markReadListener; - - private final int VIEW_TYPE_ITEM = 0; - private final int VIEW_TYPE_NADA = 1; - private final int VIEW_TYPE_MARK_READ = 2; UnreadAdapter(@NonNull List topicSummaryList, - BaseFragment.FragmentInteractionListener listener, - MarkReadInteractionListener markReadInteractionListener) { + BaseFragment.FragmentInteractionListener listener) { this.unreadList = topicSummaryList; mListener = (UnreadFragment.UnreadFragmentInteractionListener) listener; - markReadListener = markReadInteractionListener; - } - - @Override - public int getItemViewType(int position) { - if (unreadList.get(position).getDateTimeModified() == null) return VIEW_TYPE_MARK_READ; - return unreadList.get(position).getTopicUrl() == null ? VIEW_TYPE_NADA : VIEW_TYPE_ITEM; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - if (viewType == VIEW_TYPE_ITEM) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.fragment_unread_row, parent, false); - return new ViewHolder(view); - } else if (viewType == VIEW_TYPE_NADA) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.fragment_unread_empty_row, parent, false); - return new EmptyViewHolder(view); - } else if (viewType == VIEW_TYPE_MARK_READ) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.fragment_unread_mark_read_row, parent, false); - return new MarkReadViewHolder(view); - } - return null; + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_unread_row, parent, false); + return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) { - if (holder instanceof UnreadAdapter.EmptyViewHolder) { - final UnreadAdapter.EmptyViewHolder emptyViewHolder = (UnreadAdapter.EmptyViewHolder) holder; - emptyViewHolder.text.setText(unreadList.get(holder.getAdapterPosition()).getDateTimeModified()); - } else if (holder instanceof UnreadAdapter.ViewHolder) { - final UnreadAdapter.ViewHolder viewHolder = (UnreadAdapter.ViewHolder) holder; - - viewHolder.mTitleView.setText(unreadList.get(holder.getAdapterPosition()).getSubject()); - viewHolder.mDateTimeView.setText(unreadList.get(holder.getAdapterPosition()).getDateTimeModified()); - viewHolder.mUserView.setText(unreadList.get(position).getLastUser()); - - viewHolder.topic = unreadList.get(holder.getAdapterPosition()); - - viewHolder.mView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (null != mListener) { - // Notify the active callbacks interface (the activity, if the - // fragment is attached to one) that an item has been selected. - mListener.onUnreadFragmentInteraction(viewHolder.topic); //? - } - } - }); - } else if (holder instanceof UnreadAdapter.MarkReadViewHolder) { - final UnreadAdapter.MarkReadViewHolder markReadViewHolder = (UnreadAdapter.MarkReadViewHolder) holder; - markReadViewHolder.text.setText(unreadList.get(holder.getAdapterPosition()).getSubject()); - markReadViewHolder.topic = unreadList.get(holder.getAdapterPosition()); - - markReadViewHolder.mView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (null != mListener) { - // Notify the active callbacks interface (the activity, if the - // fragment is attached to one) that an item has been selected. - markReadListener.onMarkReadInteraction(unreadList.get(holder.getAdapterPosition()).getTopicUrl()); - } - } - }); + TopicSummary topicSummary = unreadList.get(holder.getAdapterPosition()); + final UnreadAdapter.ViewHolder viewHolder = (UnreadAdapter.ViewHolder) holder; + + viewHolder.mTitleView.setText(topicSummary.getSubject()); + if(BaseApplication.getInstance().isDisplayRelativeTimeEnabled()){ + String timestamp = topicSummary.getLastPostTimestamp(); + try{ + viewHolder.mDateTimeView.setReferenceTime(Long.valueOf(timestamp)); + } + catch(NumberFormatException e){ + Timber.e(e, "Invalid number format: %s", timestamp); + viewHolder.mDateTimeView.setText(topicSummary.getLastPostSimplifiedDateTime()); + } } + else + viewHolder.mDateTimeView.setText(topicSummary.getLastPostSimplifiedDateTime()); + + viewHolder.mUserView.setText(topicSummary.getLastUser()); + viewHolder.topic = topicSummary; + + viewHolder.mView.setOnClickListener(v -> { + if (null != mListener) { + // Notify the active callbacks interface (the activity, if the + // fragment is attached to one) that an item has been selected. + mListener.onUnreadFragmentInteraction(viewHolder.topic); //? + } + }); } @Override @@ -107,7 +75,7 @@ class UnreadAdapter extends RecyclerView.Adapter { final View mView; final TextView mTitleView; final TextView mUserView; - final TextView mDateTimeView; + final RelativeTimeTextView mDateTimeView; public TopicSummary topic; ViewHolder(View view) { @@ -118,29 +86,4 @@ class UnreadAdapter extends RecyclerView.Adapter { mDateTimeView = view.findViewById(R.id.dateTime); } } - - private static class EmptyViewHolder extends RecyclerView.ViewHolder { - final TextView text; - - EmptyViewHolder(View view) { - super(view); - text = view.findViewById(R.id.text); - } - } - - private static class MarkReadViewHolder extends RecyclerView.ViewHolder { - final View mView; - final TextView text; - public TopicSummary topic; - - MarkReadViewHolder(View view) { - super(view); - mView = view; - text = view.findViewById(R.id.mark_read); - } - } - - interface MarkReadInteractionListener { - void onMarkReadInteraction(String markReadLinkUrl); - } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java index 1db4131e..c3088094 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java @@ -1,4 +1,3 @@ - package gr.thmmy.mthmmy.activities.main.unread; import android.os.AsyncTask; @@ -7,32 +6,36 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -import android.widget.RelativeLayout; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import com.google.android.material.floatingactionbutton.FloatingActionButton; + import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.TopicSummary; import gr.thmmy.mthmmy.session.SessionManager; -import gr.thmmy.mthmmy.utils.CustomRecyclerView; +import gr.thmmy.mthmmy.session.ValidateSessionTask; import gr.thmmy.mthmmy.utils.NetworkResultCodes; import gr.thmmy.mthmmy.utils.parsing.NewParseTask; import gr.thmmy.mthmmy.utils.parsing.ParseException; +import gr.thmmy.mthmmy.views.CustomRecyclerView; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; -import okhttp3.Request; import okhttp3.Response; import timber.log.Timber; @@ -50,14 +53,19 @@ public class UnreadFragment extends BaseFragment { private MaterialProgressBar progressBar; private SwipeRefreshLayout swipeRefreshLayout; + private FloatingActionButton markAsReadFAB; + private TextView noUnreadTopicsTextView; + private UnreadAdapter unreadAdapter; private List topicSummaries; + private String markAsReadUrl; private int numberOfPages = 0; private int loadedPages = 0; private UnreadTask unreadTask; private MarkReadTask markReadTask; + private ValidateSessionTask validateSessionTask; // Required empty public constructor public UnreadFragment() {} @@ -81,18 +89,22 @@ public class UnreadFragment extends BaseFragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); topicSummaries = new ArrayList<>(); + markAsReadUrl = BaseApplication.getInstance().getSessionManager().getMarkAllAsReadLink(); + if(markAsReadUrl==null){ + Timber.i("MarkAsRead URL is null."); + startValidateSessionTask(); + } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - if (topicSummaries.isEmpty()) { - unreadTask = new UnreadTask(this::onUnreadTaskStarted, this::onUnreadTaskFinished); + if (topicSummaries.isEmpty()){ + unreadTask = new UnreadTask(this::onUnreadTaskStarted, UnreadFragment.this::onUnreadTaskCancelled, this::onUnreadTaskFinished); assert SessionManager.unreadUrl != null; unreadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.unreadUrl.toString()); } - markReadTask = new MarkReadTask(); - Timber.d("onActivityCreated"); + markReadTask = new MarkReadTask(this::onMarkReadTaskStarted, this::onMarkReadTaskFinished); } @@ -103,15 +115,21 @@ public class UnreadFragment extends BaseFragment { final View rootView = inflater.inflate(R.layout.fragment_unread, container, false); // Set the adapter - if (rootView instanceof RelativeLayout) { + if (rootView instanceof CoordinatorLayout) { progressBar = rootView.findViewById(R.id.progressBar); - unreadAdapter = new UnreadAdapter(topicSummaries, - fragmentInteractionListener, markReadLinkUrl -> { - if (!markReadTask.isRunning() && !unreadTask.isRunning()) { - markReadTask = new MarkReadTask(); - markReadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, markReadLinkUrl); - } - }); + noUnreadTopicsTextView = rootView.findViewById(R.id.no_unread_topics); + markAsReadFAB = rootView.findViewById(R.id.unread_fab); + + if(topicSummaries.isEmpty()){ + hideMarkAsReadFAB(); + noUnreadTopicsTextView.setVisibility(View.VISIBLE); + } + else{ + noUnreadTopicsTextView.setVisibility(View.INVISIBLE); + showMarkAsReadFAB(); + } + + unreadAdapter = new UnreadAdapter(topicSummaries, fragmentInteractionListener); CustomRecyclerView recyclerView = rootView.findViewById(R.id.list); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(recyclerView.getContext()); @@ -125,15 +143,7 @@ public class UnreadFragment extends BaseFragment { swipeRefreshLayout.setProgressBackgroundColorSchemeResource(R.color.primary); swipeRefreshLayout.setColorSchemeResources(R.color.accent); swipeRefreshLayout.setOnRefreshListener( - () -> { - if (!unreadTask.isRunning()) { - numberOfPages = 0; - loadedPages = 0; - unreadTask = new UnreadTask(this::onUnreadTaskStarted, this::onUnreadTaskFinished); - assert SessionManager.unreadUrl != null; - unreadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.unreadUrl.toString()); - } - } + this::startUnreadTask ); } @@ -143,46 +153,126 @@ public class UnreadFragment extends BaseFragment { @Override public void onDestroy() { super.onDestroy(); - if (unreadTask!=null && unreadTask.isRunning()) - unreadTask.cancel(true); - if (markReadTask!=null && markReadTask.isRunning()) - markReadTask.cancel(true); + cancelUnreadTaskIfRunning(); + if (markReadTask!=null){ + try{ + if(markReadTask.isRunning()) + markReadTask.cancel(true); + } // Yes, it happens even though we checked + catch (NullPointerException ignored){ } + } + if (validateSessionTask!=null){ + try{ + if(validateSessionTask.isRunning()) + validateSessionTask.cancel(true); + } // Yes, it happens even though we checked + catch (NullPointerException ignored){ } + } if(topicSummaries!=null) topicSummaries.clear(); } + private void startUnreadTask(){ + if (unreadTask!=null) { + try{ + if(!unreadTask.isRunning()){ + numberOfPages = 0; + loadedPages = 0; + unreadTask = new UnreadTask(UnreadFragment.this::onUnreadTaskStarted, UnreadFragment.this::onUnreadTaskCancelled, UnreadFragment.this::onUnreadTaskFinished); + assert SessionManager.unreadUrl != null; + unreadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.unreadUrl.toString()); + } + } + catch (NullPointerException ignored){ } + } + } + + private void startValidateSessionTask(){ + validateSessionTask = new ValidateSessionTask(); + validateSessionTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + + private void cancelUnreadTaskIfRunning(){ + if (unreadTask!=null){ + try{ + if(unreadTask.isRunning()) + unreadTask.cancel(true); + } // Yes, it happens even though we checked + catch (NullPointerException ignored){ } + } + } + public interface UnreadFragmentInteractionListener extends FragmentInteractionListener { void onUnreadFragmentInteraction(TopicSummary topicSummary); } - //---------------------------------------ASYNC TASK----------------------------------- + private void showMarkAsReadFAB() { + markAsReadFAB.setOnClickListener(v -> showMarkAsReadConfirmationDialog()); + markAsReadFAB.show(); + markAsReadFAB.setTag(true); + } + + private void hideMarkAsReadFAB() { + markAsReadFAB.setOnClickListener(null); + markAsReadFAB.hide(); + markAsReadFAB.setTag(false); + } + + private void showMarkAsReadConfirmationDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppCompatAlertDialogStyle); + builder.setTitle("Mark all as read"); + builder.setMessage("Are you sure that you want to mark ALL topics as read?"); + builder.setPositiveButton("Yep", (dialogInterface, i) -> { + if (!markReadTask.isRunning() && markAsReadUrl!=null){ + markReadTask = new MarkReadTask(this::onMarkReadTaskStarted, this::onMarkReadTaskFinished); + markReadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, markAsReadUrl); + } + }); + builder.setNegativeButton("Nope", (dialogInterface, i) -> {}); + builder.create().show(); + } + + private void hideProgressUI(){ + progressBar.setVisibility(ProgressBar.INVISIBLE); + swipeRefreshLayout.setRefreshing(false); + } + + //---------------------------------------UNREAD TASK----------------------------------- private void onUnreadTaskStarted() { progressBar.setVisibility(ProgressBar.VISIBLE); } + private void onUnreadTaskCancelled() { + swipeRefreshLayout.setRefreshing(false); + } + private void onUnreadTaskFinished(int resultCode, ArrayList fetchedUnread) { if (resultCode == NetworkResultCodes.SUCCESSFUL) { - if(fetchedUnread!=null && !fetchedUnread.isEmpty()){ + if(!fetchedUnread.isEmpty()){ if(loadedPages==0) topicSummaries.clear(); topicSummaries.addAll(fetchedUnread); - unreadAdapter.notifyDataSetChanged(); + noUnreadTopicsTextView.setVisibility(View.INVISIBLE); + showMarkAsReadFAB(); + } + else { + topicSummaries.clear(); + hideMarkAsReadFAB(); + noUnreadTopicsTextView.setVisibility(View.VISIBLE); } + unreadAdapter.notifyDataSetChanged(); loadedPages++; if (loadedPages < numberOfPages) { - unreadTask = new UnreadTask(this::onUnreadTaskStarted, this::onUnreadTaskFinished); + unreadTask = new UnreadTask(this::onUnreadTaskStarted, UnreadFragment.this::onUnreadTaskCancelled, this::onUnreadTaskFinished); assert SessionManager.unreadUrl != null; unreadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.unreadUrl.toString() + ";start=" + loadedPages * 20); } - else { - progressBar.setVisibility(ProgressBar.INVISIBLE); - swipeRefreshLayout.setRefreshing(false); - } + else + hideProgressUI(); } else{ - progressBar.setVisibility(ProgressBar.INVISIBLE); - swipeRefreshLayout.setRefreshing(false); + hideProgressUI(); if (resultCode == NetworkResultCodes.NETWORK_ERROR) Toast.makeText(getContext(), "Network error", Toast.LENGTH_SHORT).show(); else @@ -192,9 +282,8 @@ public class UnreadFragment extends BaseFragment { } private class UnreadTask extends NewParseTask> { - - UnreadTask(OnTaskStartedListener onTaskStartedListener, OnNetworkTaskFinishedListener> onParseTaskFinishedListener) { - super(onTaskStartedListener, onParseTaskFinishedListener); + UnreadTask(OnTaskStartedListener onTaskStartedListener, OnTaskCancelledListener onTaskCancelledListener, OnNetworkTaskFinishedListener> onParseTaskFinishedListener) { + super(onTaskStartedListener, onTaskCancelledListener, onParseTaskFinishedListener); } @Override @@ -202,7 +291,6 @@ public class UnreadFragment extends BaseFragment { Elements unread = document.select("table.bordercolor[cellspacing=1] tr:not(.titlebg)"); ArrayList fetchedTopicSummaries = new ArrayList<>(); if (!unread.isEmpty()) { - //topicSummaries.clear(); for (Element row : unread) { Elements information = row.select("td"); String link = information.last().select("a").first().attr("href"); @@ -211,17 +299,9 @@ public class UnreadFragment extends BaseFragment { Element lastUserAndDate = information.get(6); String lastUser = lastUserAndDate.select("a").text(); String dateTime = lastUserAndDate.select("span").html(); - //dateTime = dateTime.replace("
", ""); dateTime = dateTime.substring(0, dateTime.indexOf("
")); dateTime = dateTime.replace("", ""); dateTime = dateTime.replace("", ""); - if (dateTime.contains(" am") || dateTime.contains(" pm") || - dateTime.contains(" πμ") || dateTime.contains(" μμ")) - dateTime = dateTime.replaceAll(":[0-5][0-9] ", " "); - else - dateTime = dateTime.substring(0, dateTime.lastIndexOf(":")); - if (!dateTime.contains(",")) - dateTime = dateTime.replaceAll(".+? ([0-9])", "$1"); fetchedTopicSummaries.add(new TopicSummary(link, title, lastUser, dateTime)); } @@ -230,7 +310,6 @@ public class UnreadFragment extends BaseFragment { Element pagesElement = null, markRead = null; if (topBar != null) { pagesElement = topBar.select("td.middletext").first(); - markRead = document.select("table:not(.bordercolor):not([width])").select("a") .first(); } @@ -243,79 +322,68 @@ public class UnreadFragment extends BaseFragment { numberOfPages = 1; } - if (markRead != null && loadedPages == numberOfPages - 1) - fetchedTopicSummaries.add(new TopicSummary(markRead.attr("href"), markRead.text(), null, - null)); - } else { - String message = document.select("table.bordercolor[cellspacing=1]").first().text(); - if (message.contains("No messages")) { //It's english - message = "No unread posts!"; - } else { //It's greek - message = "Δεν υπάρχουν μη αναγνωσμένα μηνύματα!"; + if (markRead != null && loadedPages == numberOfPages - 1){ + String retrievedMarkAsReadUrl = markRead.attr("href"); + if(!retrievedMarkAsReadUrl.equals(markAsReadUrl)) { + markAsReadUrl = retrievedMarkAsReadUrl; + BaseApplication.getInstance().getSessionManager().refreshSescFromUrl(retrievedMarkAsReadUrl); + } } - fetchedTopicSummaries.add(new TopicSummary(null, null, null, message)); + + return fetchedTopicSummaries; } - return fetchedTopicSummaries; + return new ArrayList<>(); } @Override - protected int getResultCode(Response response, ArrayList data) { + protected int getResultCode(Response response, ArrayList topicSummaries) { return NetworkResultCodes.SUCCESSFUL; } } - private class MarkReadTask extends AsyncTask { - private static final int SUCCESS = 0; - private static final int NETWORK_ERROR = 1; - private static final int OTHER_ERROR = 2; + //---------------------------------------MARKREAD TASK------------------------------------------ + private void onMarkReadTaskStarted() { + cancelUnreadTaskIfRunning(); + progressBar.setVisibility(ProgressBar.VISIBLE); + } - @Override - protected void onPreExecute() { - progressBar.setVisibility(ProgressBar.VISIBLE); + private void onMarkReadTaskFinished(int resultCode, Boolean isSessionVerified) { + hideProgressUI(); + if (resultCode == NetworkResultCodes.SUCCESSFUL) { + if (!isSessionVerified){ + Toast.makeText(getContext(), "Session verification failed", Toast.LENGTH_SHORT).show(); + startValidateSessionTask(); + } + else + startUnreadTask(); } + else{ + hideProgressUI(); + if (resultCode == NetworkResultCodes.NETWORK_ERROR) + Toast.makeText(getContext(), "Network error", Toast.LENGTH_SHORT).show(); + else + Toast.makeText(getContext(), "Unexpected error," + + " please contact the developers with the details", Toast.LENGTH_LONG).show(); + } + } - @Override - protected Integer doInBackground(String... strings) { - Request request = new Request.Builder() - .url(strings[0]) - .build(); - try { - client.newCall(request).execute(); - return SUCCESS; - } catch (IOException e) { - Timber.i(e, "IO Exception"); - return NETWORK_ERROR; - } catch (Exception e) { - Timber.e(e, "Exception"); - return OTHER_ERROR; - } + private class MarkReadTask extends NewParseTask { + MarkReadTask(OnTaskStartedListener onTaskStartedListener, OnNetworkTaskFinishedListener onParseTaskFinishedListener) { + super(onTaskStartedListener, onParseTaskFinishedListener); } @Override - protected void onPostExecute(Integer result) { - progressBar.setVisibility(ProgressBar.GONE); - - if (result == NETWORK_ERROR) { - Toast.makeText(getContext() - , "Task was unsuccessful!\n Please check your internet conneciton.", - Toast.LENGTH_LONG).show(); - } else if (result == OTHER_ERROR) { - Toast.makeText(getContext() - , "Fatal error!\n Task aborted...", Toast.LENGTH_LONG).show(); - } else { - if (!unreadTask.isRunning()) { - numberOfPages = 0; - loadedPages = 0; - unreadTask = new UnreadTask(UnreadFragment.this::onUnreadTaskStarted, UnreadFragment.this::onUnreadTaskFinished); - assert SessionManager.unreadUrl != null; - unreadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, SessionManager.unreadUrl.toString()); - } - } + protected Boolean parse(Document document, Response response) throws ParseException { + Elements sessionVerificationFailed = document.select("td:containsOwn(Session " + + "verification failed. Please try logging out and back in again, and then try " + + "again.), td:containsOwn(Η επαλήθευση συνόδου απέτυχε. Παρακαλούμε κάντε " + + "αποσύνδεση, επανασύνδεση και ξαναδοκιμάστε.)"); + return sessionVerificationFailed.isEmpty(); } - //TODO: Maybe extend this task and use isRunning() from ExternalAsyncTask instead (?) - public boolean isRunning(){ - return getStatus() == AsyncTask.Status.RUNNING; + @Override + protected int getResultCode(Response response, Boolean isSessionVerified) { + return NetworkResultCodes.SUCCESSFUL; } } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/ProfileActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/ProfileActivity.java index e3425c3c..81f70fae 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/ProfileActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/ProfileActivity.java @@ -19,15 +19,14 @@ import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatDelegate; -import androidx.core.content.res.ResourcesCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; +import com.bumptech.glide.Glide; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.tabs.TabLayout; -import com.squareup.picasso.Picasso; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -46,12 +45,11 @@ import gr.thmmy.mthmmy.activities.topic.TopicActivity; import gr.thmmy.mthmmy.base.BaseActivity; import gr.thmmy.mthmmy.model.PostSummary; import gr.thmmy.mthmmy.model.ThmmyPage; -import gr.thmmy.mthmmy.utils.CenterVerticalSpan; -import gr.thmmy.mthmmy.utils.CircleTransform; import gr.thmmy.mthmmy.utils.NetworkResultCodes; import gr.thmmy.mthmmy.utils.Parcel; import gr.thmmy.mthmmy.utils.parsing.NewParseTask; import gr.thmmy.mthmmy.utils.parsing.ParseException; +import gr.thmmy.mthmmy.utils.ui.CenterVerticalSpan; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import okhttp3.Response; import timber.log.Timber; @@ -59,6 +57,7 @@ import timber.log.Timber; import static gr.thmmy.mthmmy.activities.topic.TopicActivity.BUNDLE_TOPIC_TITLE; import static gr.thmmy.mthmmy.activities.topic.TopicActivity.BUNDLE_TOPIC_URL; import static gr.thmmy.mthmmy.utils.parsing.ParseHelpers.emojiTagToHtml; +import static gr.thmmy.mthmmy.utils.ui.PhotoViewUtils.displayPhotoViewImage; /** * Activity for user profile. When creating an Intent of this activity you need to bundle a String @@ -129,10 +128,10 @@ public class ProfileActivity extends BaseActivity implements LatestPostsFragment avatarView = findViewById(R.id.user_thumbnail); if (!Objects.equals(avatarUrl, "")) - //noinspection ConstantConditions - loadAvatar(); + loadAvatar(false); + else - loadDefaultAvatar(); + loadAvatar(true); usernameView = findViewById(R.id.profile_activity_username); usernameView.setTypeface(Typeface.createFromAsset(this.getAssets() , "fonts/fontawesome-webfont.ttf")); @@ -213,29 +212,21 @@ public class ProfileActivity extends BaseActivity implements LatestPostsFragment if (pmFAB.getVisibility() != View.GONE) pmFAB.setEnabled(false); } - private void loadAvatar(){ - Picasso.with(this) - .load(avatarUrl) - .fit() - .centerCrop() - .error(Objects.requireNonNull(ResourcesCompat.getDrawable(this.getResources() - , R.drawable.ic_default_user_avatar, null))) - .placeholder(Objects.requireNonNull(ResourcesCompat.getDrawable(this.getResources() - , R.drawable.ic_default_user_avatar, null))) - .transform(new CircleTransform()) - .into(avatarView); - } + private void loadAvatar(Boolean loadDefault){ + String avatarUri; + if(loadDefault) + avatarUri = "R.drawable.ic_default_user_avatar"; + else { + avatarUri = avatarUrl; + if(avatarUrl!=null) + avatarView.setOnClickListener(v -> displayPhotoViewImage(ProfileActivity.this, avatarUrl)); + } - private void loadDefaultAvatar(){ - Picasso.with(this) - .load(R.drawable.ic_default_user_avatar) - .fit() - .centerCrop() - .error(Objects.requireNonNull(ResourcesCompat.getDrawable(this.getResources() - , R.drawable.ic_default_user_avatar, null))) - .placeholder(Objects.requireNonNull(ResourcesCompat.getDrawable(this.getResources() - , R.drawable.ic_default_user_avatar, null))) - .transform(new CircleTransform()) + Glide.with(this) + .load(avatarUri) + .circleCrop() + .error(R.drawable.ic_default_user_avatar) + .placeholder(R.drawable.ic_default_user_avatar) .into(avatarView); } @@ -318,11 +309,10 @@ public class ProfileActivity extends BaseActivity implements LatestPostsFragment usernameView.setText(usernameSpan); } else if (usernameView.getText() != username) usernameView.setText(username); if (avatarUrl != null && !Objects.equals(avatarUrl, "")) - //noinspection ConstantConditions - loadAvatar(); + loadAvatar(false); else - loadDefaultAvatar(); - if (personalText != null) { + loadAvatar(true); + if (personalText != null && !personalText.isEmpty()) { personalTextView.setText(personalText); personalTextView.setVisibility(View.VISIBLE); } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java index d2a4d1cb..fbfb9300 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java @@ -1,10 +1,11 @@ package gr.thmmy.mthmmy.activities.profile.latestPosts; +import android.annotation.SuppressLint; +import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.webkit.WebView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -16,6 +17,7 @@ import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.PostSummary; import gr.thmmy.mthmmy.model.TopicSummary; +import gr.thmmy.mthmmy.views.ReactiveWebView; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; /** @@ -26,11 +28,13 @@ class LatestPostsAdapter extends RecyclerView.Adapter { private static final int VIEW_TYPE_EMPTY = -1; private static final int VIEW_TYPE_ITEM = 0; private static final int VIEW_TYPE_LOADING = 1; + private final Context context; private final LatestPostsFragment.LatestPostsFragmentInteractionListener interactionListener; private final ArrayList parsedTopicSummaries; - LatestPostsAdapter(BaseFragment.FragmentInteractionListener interactionListener, + LatestPostsAdapter(Context context, BaseFragment.FragmentInteractionListener interactionListener, ArrayList parsedTopicSummaries) { + this.context = context; this.interactionListener = (LatestPostsFragment.LatestPostsFragmentInteractionListener) interactionListener; this.parsedTopicSummaries = parsedTopicSummaries; } @@ -64,6 +68,7 @@ class LatestPostsAdapter extends RecyclerView.Adapter { return null; } + @SuppressLint("ClickableViewAccessibility") @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { if (holder instanceof LatestPostViewHolder) { @@ -99,7 +104,7 @@ class LatestPostsAdapter extends RecyclerView.Adapter { final RelativeLayout latestPostsRow; final TextView postTitle; final TextView postDate; - final WebView post; + final ReactiveWebView post; LatestPostViewHolder(View itemView) { super(itemView); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java index 59fa6421..b23cc601 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java @@ -6,7 +6,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -import android.widget.Toast; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; @@ -25,14 +24,13 @@ import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.base.BaseActivity; import gr.thmmy.mthmmy.base.BaseFragment; import gr.thmmy.mthmmy.model.PostSummary; +import gr.thmmy.mthmmy.utils.parsing.ParseException; import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import okhttp3.Request; import okhttp3.Response; import timber.log.Timber; -import static gr.thmmy.mthmmy.utils.parsing.ParseHelpers.deobfuscateElements; - /** * Use the {@link LatestPostsFragment#newInstance} factory method to create an instance of this fragment. */ @@ -87,7 +85,7 @@ public class LatestPostsFragment extends BaseFragment implements LatestPostsAdap public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.fragment_latest_posts, container, false); - latestPostsAdapter = new LatestPostsAdapter(fragmentInteractionListener, parsedTopicSummaries); + latestPostsAdapter = new LatestPostsAdapter(this.getContext(), fragmentInteractionListener, parsedTopicSummaries); RecyclerView mainContent = rootView.findViewById(R.id.profile_latest_posts_recycler); mainContent.setAdapter(latestPostsAdapter); final LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); @@ -176,13 +174,9 @@ public class LatestPostsFragment extends BaseFragment implements LatestPostsAdap } protected void onPostExecute(Boolean result) { - if (!result) { //Parse failed! - Timber.d("Parse failed!"); - Toast.makeText(getContext() - , "Fatal error!\n Aborting...", Toast.LENGTH_LONG).show(); - getActivity().finish(); - } - //Parse was successful + if (Boolean.FALSE.equals(result)) + Timber.e(new ParseException("Parsing failed(latest posts)"),"ParseException"); + progressBar.setVisibility(ProgressBar.INVISIBLE); latestPostsAdapter.notifyDataSetChanged(); isLoadingMore = false; @@ -208,7 +202,6 @@ public class LatestPostsFragment extends BaseFragment implements LatestPostsAdap return true; } - deobfuscateElements(latestPostsRows, false); for (Element row : latestPostsRows) { String pTopicUrl, pTopicTitle, pDateTime, pPost; if (Integer.parseInt(row.attr("cellpadding")) == 4) { diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/stats/StatsFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/stats/StatsFragment.java index a0b3dafc..7f517f1e 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/stats/StatsFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/stats/StatsFragment.java @@ -46,8 +46,6 @@ import okhttp3.Request; import okhttp3.Response; import timber.log.Timber; -import static gr.thmmy.mthmmy.utils.parsing.ParseHelpers.deobfuscateElements; - public class StatsFragment extends Fragment { /** * The key to use when putting profile's url String to {@link StatsFragment}'s Bundle. @@ -173,7 +171,6 @@ public class StatsFragment extends Fragment { return false; { Elements titleRows = statsPage.select("table.bordercolor[align]>tbody>tr.titlebg"); - deobfuscateElements(titleRows, false); generalStatisticsTitle = titleRows.first().text(); if (userHasPosts) { postingActivityByTimeTitle = titleRows.get(1).text(); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/summary/SummaryFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/summary/SummaryFragment.java index 4df4598f..c035ca26 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/summary/SummaryFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/summary/SummaryFragment.java @@ -27,9 +27,6 @@ import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import timber.log.Timber; -import static gr.thmmy.mthmmy.utils.parsing.ParseHelpers.deobfuscateElements; - - /** * Use the {@link SummaryFragment#newInstance} factory method to create an instance of this fragment. */ @@ -135,7 +132,6 @@ public class SummaryFragment extends Fragment { //Contains all summary's rows Elements summaryRows = profile.select(".bordercolor > tbody:nth-child(1) > tr:nth-child(2) tr"); - deobfuscateElements(summaryRows, false); for (Element summaryRow : summaryRows) { String rowText = summaryRow.text(), pHtml = ""; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsActivity.java index c9637dd0..6414a497 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsActivity.java @@ -9,6 +9,7 @@ import gr.thmmy.mthmmy.base.BaseActivity; public class SettingsActivity extends BaseActivity { public static final String DEFAULT_HOME_TAB = "pref_app_main_default_tab_key"; + public static final String DISPLAY_RELATIVE_TIME = "pref_app_display_relative_time_key"; public static final String NOTIFICATION_LED_KEY = "pref_notification_led_enable_key"; public static final String NOTIFICATION_VIBRATION_KEY = "pref_notification_vibration_enable_key"; public static final String POSTING_APP_SIGNATURE_ENABLE_KEY = "pref_posting_app_signature_enable_key"; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsFragment.java index ec5907b6..edd06356 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/settings/SettingsFragment.java @@ -42,6 +42,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared public static final String SELECTED_RINGTONE = "selectedRingtoneKey"; private static final String SILENT_SELECTED = "STFU"; + private static final String UNREAD = "Unread"; + private SharedPreferences settingsFile; private PREFS_TYPE prefs_type = PREFS_TYPE.NOT_SET; @@ -65,7 +67,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared defaultHomeTabValues.add("1"); if(isLoggedIn = BaseApplication.getInstance().getSessionManager().isLoggedIn()){ - defaultHomeTabEntries.add("Unread"); + defaultHomeTabEntries.add(UNREAD); defaultHomeTabValues.add("2"); } } @@ -171,16 +173,16 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared if(isLoggedIn&& prefs_type==PREFS_TYPE.GUEST) { prefs_type = PREFS_TYPE.USER; setPreferencesFromResource(R.xml.app_preferences_user, getPreferenceScreen().getKey()); - if(!defaultHomeTabEntries.contains("Unread")){ - defaultHomeTabEntries.add("Unread"); + if(!defaultHomeTabEntries.contains(UNREAD)){ + defaultHomeTabEntries.add(UNREAD); defaultHomeTabValues.add("2"); } } else if(!isLoggedIn&&prefs_type==PREFS_TYPE.USER){ prefs_type = PREFS_TYPE.GUEST; setPreferencesFromResource(R.xml.app_preferences_guest,getPreferenceScreen().getKey()); - if(defaultHomeTabEntries.contains("Unread")){ - defaultHomeTabEntries.remove("Unread"); + if(defaultHomeTabEntries.contains(UNREAD)){ + defaultHomeTabEntries.remove(UNREAD); defaultHomeTabValues.remove("2"); } } @@ -201,7 +203,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared BaseApplication.getInstance().startFirebaseCrashlyticsCollection(); else { Timber.i("Crashlytics collection will be disabled after restarting."); - Toast.makeText(BaseApplication.getInstance().getApplicationContext(), "This change will take effect once you restart the app.", Toast.LENGTH_SHORT).show(); + displayRestartAppToTakeEffectToast(); } } else if (key.equals(getString(R.string.pref_privacy_analytics_enable_key))) { enabled = sharedPreferences.getBoolean(key, false); @@ -210,6 +212,13 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared Timber.i("Analytics collection enabled."); else Timber.i("Analytics collection disabled."); + } else if (key.equals(getString(R.string.pref_app_display_relative_time_key)) + && BaseApplication.getInstance().isDisplayRelativeTimeEnabled()!=sharedPreferences.getBoolean(key, false)){ + displayRestartAppToTakeEffectToast(); } } + + private void displayRestartAppToTakeEffectToast(){ + Toast.makeText(BaseApplication.getInstance().getApplicationContext(), "This change will take effect once you restart the app.", Toast.LENGTH_SHORT).show(); + } } \ No newline at end of file diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/shoutbox/ShoutAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/shoutbox/ShoutAdapter.java index 9976975e..f2c7d192 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/shoutbox/ShoutAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/shoutbox/ShoutAdapter.java @@ -23,7 +23,8 @@ import gr.thmmy.mthmmy.activities.profile.ProfileActivity; import gr.thmmy.mthmmy.activities.topic.TopicActivity; import gr.thmmy.mthmmy.model.Shout; import gr.thmmy.mthmmy.model.ThmmyPage; -import gr.thmmy.mthmmy.utils.CustomRecyclerView; +import gr.thmmy.mthmmy.views.CustomRecyclerView; +import gr.thmmy.mthmmy.views.ReactiveWebView; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static gr.thmmy.mthmmy.activities.board.BoardActivity.BUNDLE_BOARD_TITLE; @@ -85,7 +86,7 @@ public class ShoutAdapter extends CustomRecyclerView.Adapter { String formUrl = shoutboxForm.attr("action"); String sc = shoutboxForm.select("input[name=sc]").first().attr("value"); String shoutName = shoutboxForm.select("input[name=tp-shout-name]").first().attr("value"); - // TODO: make shout send nullable and disable shouting + Element shoutSendInput = shoutboxForm.select("input[name=shout_send]").first(); String shoutSend = null; if (shoutSendInput != null) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java index e0e52b3e..f9145be5 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java @@ -2,6 +2,8 @@ package gr.thmmy.mthmmy.activities.topic; import android.annotation.SuppressLint; import android.app.NotificationManager; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -47,16 +49,16 @@ import gr.thmmy.mthmmy.activities.topic.tasks.ReplyTask; import gr.thmmy.mthmmy.activities.topic.tasks.TopicTask; import gr.thmmy.mthmmy.base.BaseActivity; import gr.thmmy.mthmmy.base.BaseApplication; -import gr.thmmy.mthmmy.editorview.EmojiKeyboard; import gr.thmmy.mthmmy.model.Bookmark; import gr.thmmy.mthmmy.model.Post; import gr.thmmy.mthmmy.model.ThmmyPage; import gr.thmmy.mthmmy.model.TopicItem; -import gr.thmmy.mthmmy.utils.CustomLinearLayoutManager; import gr.thmmy.mthmmy.utils.HTMLUtils; import gr.thmmy.mthmmy.utils.NetworkResultCodes; import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import gr.thmmy.mthmmy.viewmodel.TopicViewModel; +import gr.thmmy.mthmmy.views.CustomLinearLayoutManager; +import gr.thmmy.mthmmy.views.editorview.EmojiKeyboard; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import timber.log.Timber; @@ -81,6 +83,7 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo public static final String BUNDLE_TOPIC_TITLE = "TOPIC_TITLE"; private MaterialProgressBar progressBar; private TextView toolbarTitle; + private CustomLinearLayoutManager layoutManager; private RecyclerView recyclerView; //Posts related private TopicAdapter topicAdapter; @@ -123,6 +126,7 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo private Snackbar snackbar; private TopicViewModel viewModel; private EmojiKeyboard emojiKeyboard; + private AlertDialog topicInfoDialog; //Fix for vector drawables on android <21 static { @@ -161,6 +165,7 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo toolbarTitle.setMarqueeRepeatLimit(-1); toolbarTitle.setText(topicTitle); toolbarTitle.setSelected(true); + this.setToolbarOnLongClickListener(topicPageUrl); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -177,12 +182,13 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo recyclerView = findViewById(R.id.topic_recycler_view); recyclerView.setHasFixedSize(true); //LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); - CustomLinearLayoutManager layoutManager = new CustomLinearLayoutManager( + layoutManager = new CustomLinearLayoutManager( getApplicationContext(), topicPageUrl); recyclerView.setLayoutManager(layoutManager); topicAdapter = new TopicAdapter(this, emojiKeyboard, topicItems); recyclerView.setAdapter(topicAdapter); + recyclerView.setItemViewCacheSize(17); //Every page has maximum 15 posts + Poll + EditorView replyFAB = findViewById(R.id.topic_fab); replyFAB.hide(); @@ -253,8 +259,8 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo usersViewing.setText(HTMLUtils.getSpannableFromHtml(this, topicViewers)); }); builder.setView(infoDialog); - AlertDialog dialog = builder.create(); - dialog.show(); + topicInfoDialog = builder.create(); + topicInfoDialog.show(); return true; case R.id.menu_share: Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND); @@ -312,6 +318,10 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo @Override protected void onDestroy() { super.onDestroy(); + if(topicInfoDialog!=null){ + topicInfoDialog.dismiss(); + topicInfoDialog=null; + } recyclerView.setAdapter(null); viewModel.stopLoading(); } @@ -653,11 +663,11 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo Toast.makeText(this, "Failed to remove vote", Toast.LENGTH_LONG).show(); } }); - // observe the chages in data + // observe the changes in data viewModel.getPageIndicatorIndex().observe(this, pageIndicatorIndex -> { if (pageIndicatorIndex == null) return; - pageIndicator.setText(String.valueOf(pageIndicatorIndex) + "/" + - String.valueOf(viewModel.getPageCount())); + pageIndicator.setText(pageIndicatorIndex + "/" + + viewModel.getPageCount()); }); viewModel.getTopicTitle().observe(this, newTopicTitle -> { if (newTopicTitle == null) return; @@ -682,11 +692,19 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo } }); viewModel.getTopicItems().observe(this, postList -> { - if (postList == null) progressBar.setVisibility(ProgressBar.VISIBLE); + if (postList == null) + progressBar.setVisibility(ProgressBar.VISIBLE); recyclerView.getRecycledViewPool().clear(); //Avoid inconsistency detected bug topicItems.clear(); - topicItems.addAll(postList); - topicAdapter.notifyDataSetChanged(); + + /* A workaround to avoid automatic scrolling when a new page + page is loaded (it happens sometimes only)*/ + recyclerView.setAdapter(topicAdapter); + + if (postList != null) { + topicItems.addAll(postList); + topicAdapter.notifyDataSetChanged(); + } }); /*viewModel.getFocusedPostIndex().observe(this, focusedPostIndex -> { if (focusedPostIndex == null) return; @@ -788,4 +806,31 @@ public class TopicActivity extends BaseActivity implements TopicAdapter.OnPostFo } }); } + + /**This method sets a long click listener on the title of the topic. Once the + * listener gets triggered, it copies the link url of the topic in the clipboard. + * This method is getting called on the onCreate() of the TopicActivity*/ + void setToolbarOnLongClickListener(String url) { + toolbar.setOnLongClickListener(view -> { + //Try to set the clipboard text + try { + //Create a ClipboardManager + ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); + + clipboard.setPrimaryClip(ClipData.newPlainText(BUNDLE_TOPIC_URL, url)); + + //Make a toast to inform the user that the url was copied + Toast.makeText( + TopicActivity.this, + TopicActivity.this.getString(R.string.link_copied_msg), + Toast.LENGTH_SHORT).show(); + } + //Something happened. Probably the device does not support this (report to Firebase) + catch (NullPointerException e) { + Timber.e(e, "Error while trying to copy topic's url."); + } + + return true; + }); + } } \ No newline at end of file diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java index 0e885cc3..213de341 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java @@ -43,17 +43,16 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.AppCompatButton; -import androidx.core.content.res.ResourcesCompat; import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.github.mikephil.charting.charts.HorizontalBarChart; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.BarData; import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; -import com.squareup.picasso.Picasso; import java.text.DecimalFormat; import java.util.ArrayList; @@ -65,17 +64,17 @@ import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.activities.board.BoardActivity; import gr.thmmy.mthmmy.activities.profile.ProfileActivity; import gr.thmmy.mthmmy.base.BaseActivity; -import gr.thmmy.mthmmy.editorview.EditorView; -import gr.thmmy.mthmmy.editorview.IEmojiKeyboard; import gr.thmmy.mthmmy.model.Poll; import gr.thmmy.mthmmy.model.Post; import gr.thmmy.mthmmy.model.ThmmyFile; import gr.thmmy.mthmmy.model.ThmmyPage; import gr.thmmy.mthmmy.model.TopicItem; -import gr.thmmy.mthmmy.utils.CircleTransform; import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import gr.thmmy.mthmmy.utils.parsing.ThmmyParser; import gr.thmmy.mthmmy.viewmodel.TopicViewModel; +import gr.thmmy.mthmmy.views.ReactiveWebView; +import gr.thmmy.mthmmy.views.editorview.EditorView; +import gr.thmmy.mthmmy.views.editorview.IEmojiKeyboard; import timber.log.Timber; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; @@ -364,7 +363,7 @@ class TopicAdapter extends RecyclerView.Adapter { holder.post.setWebViewClient(new LinkLauncher()); //noinspection ConstantConditions - loadAvatar(currentPost.getThumbnailURL(), holder.thumbnail); + loadAvatar(currentPost.getThumbnailURL(), holder.thumbnail, holder.itemView.getContext()); //Sets username,submit date, index number, subject, post's and attached files texts holder.username.setText(currentPost.getAuthor()); @@ -645,7 +644,7 @@ class TopicAdapter extends RecyclerView.Adapter { Post reply = (Post) topicItems.get(position); //noinspection ConstantConditions - loadAvatar(getSessionManager().getAvatarLink(), holder.thumbnail); + loadAvatar(getSessionManager().getAvatarLink(), holder.thumbnail, holder.itemView.getContext()); holder.username.setText(getSessionManager().getUsername()); holder.itemView.setAlpha(1f); @@ -737,7 +736,7 @@ class TopicAdapter extends RecyclerView.Adapter { final EditMessageViewHolder holder = (EditMessageViewHolder) currentHolder; //noinspection ConstantConditions - loadAvatar(getSessionManager().getAvatarLink(), holder.thumbnail); + loadAvatar(getSessionManager().getAvatarLink(), holder.thumbnail, holder.itemView.getContext()); holder.username.setText(getSessionManager().getUsername()); holder.editSubject.setText(currentPost.getSubject()); @@ -807,16 +806,15 @@ class TopicAdapter extends RecyclerView.Adapter { } } - private void loadAvatar(String imageUrl, ImageView imageView) { - Picasso.with(context) + private void loadAvatar(String imageUrl, ImageView imageView, Context context) { + if(imageUrl!=null) + imageUrl = imageUrl.trim(); + + Glide.with(context) .load(imageUrl) - .fit() - .centerCrop() - .error(Objects.requireNonNull(ResourcesCompat.getDrawable(context.getResources() - , R.drawable.ic_default_user_avatar_darker, null))) - .placeholder(Objects.requireNonNull(ResourcesCompat.getDrawable(context.getResources() - , R.drawable.ic_default_user_avatar_darker, null))) - .transform(new CircleTransform()) + .circleCrop() + .error(R.drawable.ic_default_user_avatar_darker) + .placeholder(R.drawable.ic_default_user_avatar_darker) .into(imageView); } @@ -832,7 +830,7 @@ class TopicAdapter extends RecyclerView.Adapter { final LinearLayout cardChildLinear; final TextView postDate, postNum, username, subject; final ImageView thumbnail; - final public WebView post; + final public ReactiveWebView post; final ImageButton quoteToggle, overflowButton; final RelativeLayout header; final LinearLayout userExtraInfo; @@ -969,7 +967,7 @@ class TopicAdapter extends RecyclerView.Adapter { if (viewModel.getCurrentPageIndex() == viewModel.getPageCount()) { //same page postFocusListener.onPostFocusChange(getItemCount() - 1); - Timber.e("new"); + Timber.d("new"); return true; } } @@ -981,7 +979,7 @@ class TopicAdapter extends RecyclerView.Adapter { for (int i = 0; i < topicItems.size(); i++) { if (topicItems.get(i) instanceof Post && ((Post) topicItems.get(i)).getPostIndex() == testAgainst) { //same page - Timber.e(Integer.toString(i)); + Timber.d(Integer.toString(i)); postFocusListener.onPostFocusChange(i); return true; } diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java index 1a7922ff..901ce553 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java @@ -18,6 +18,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import gr.thmmy.mthmmy.base.BaseActivity; +import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.model.Poll; import gr.thmmy.mthmmy.model.Post; import gr.thmmy.mthmmy.model.ThmmyFile; @@ -25,6 +26,8 @@ import gr.thmmy.mthmmy.model.TopicItem; import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import timber.log.Timber; +import static gr.thmmy.mthmmy.utils.parsing.ThmmyDateTimeParser.convertToTimestamp; + /** * Singleton used for parsing a topic. @@ -175,6 +178,7 @@ public class TopicParser { p_specialRank, p_gender, p_personalText, p_numberOfPosts, p_postLastEditDate, p_postURL, p_deletePostURL, p_editPostURL; int p_postNum, p_postIndex, p_numberOfStars, p_userColor; + long p_timestamp; boolean p_isDeleted = false, p_isUserMentionedInPost = false; ArrayList p_attachedFiles; @@ -191,6 +195,7 @@ public class TopicParser { p_postLastEditDate = null; p_deletePostURL = null; p_editPostURL = null; + p_timestamp = 0; //Language independent parsing //Finds thumbnail url @@ -267,6 +272,12 @@ public class TopicParser { p_postDate = p_postDate.substring(p_postDate.indexOf("στις:") + 6 , p_postDate.indexOf(" »")); + if (BaseApplication.getInstance().isDisplayRelativeTimeEnabled()) { + String timestamp = convertToTimestamp(p_postDate); + if(timestamp!=null) + p_timestamp = Long.valueOf(timestamp); + } + //Finds post's reply index number Element postNum = thisRow.select("div.smalltext:matches(Απάντηση #)").first(); if (postNum == null) { //Topic starter diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java index 09206a1c..5438132e 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java @@ -2,6 +2,7 @@ package gr.thmmy.mthmmy.activities.topic.tasks; import android.os.AsyncTask; +import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Selector; @@ -9,7 +10,6 @@ import org.jsoup.select.Selector; import java.io.IOException; import gr.thmmy.mthmmy.base.BaseApplication; -import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; @@ -46,7 +46,7 @@ public class PrepareForEditTask extends AsyncTask { @Override protected TopicTaskResult doInBackground(String... strings) { Document topic = null; + String newPageUrl = strings[0]; + //TODO: Perhaps decode all URLs app-wide (i.e. in BaseApplication)? + try { + //Decodes e.g. any %3B to ; + newPageUrl = URLDecoder.decode(newPageUrl, StandardCharsets.UTF_8.displayName()); + } catch (UnsupportedEncodingException e) { + Timber.e(e, "Unsupported Encoding"); + } + //Finds the index of message focus if present int postFocus = 0; - { - if (newPageUrl.contains("msg")) { - String tmp = newPageUrl.substring(newPageUrl.indexOf("msg") + 3); - if (tmp.contains(";")) - postFocus = Integer.parseInt(tmp.substring(0, tmp.indexOf(";"))); - else if (tmp.contains("#")) - postFocus = Integer.parseInt(tmp.substring(0, tmp.indexOf("#"))); - } + + //TODO: Better parseInt handling - may rarely fail + if (newPageUrl.contains("msg")) { + String tmp = newPageUrl.substring(newPageUrl.indexOf("msg") + 3); + if (tmp.contains(";")) + postFocus = Integer.parseInt(tmp.substring(0, tmp.indexOf(';'))); + else if (tmp.contains("#")) + postFocus = Integer.parseInt(tmp.substring(0, tmp.indexOf('#'))); } Request request = new Request.Builder() @@ -60,7 +73,7 @@ public class TopicTask extends AsyncTask { .build(); try { Response response = BaseApplication.getInstance().getClient().newCall(request).execute(); - topic = ParseHelpers.parse(response.body().string()); + topic = Jsoup.parse(response.body().string()); ParseHelpers.Language language = ParseHelpers.Language.getLanguage(topic); @@ -120,10 +133,10 @@ public class TopicTask extends AsyncTask { } private boolean isUnauthorized(Document document) { - return document != null && document.select("body:contains(The topic or board you" + + return document != null && !document.select("body:contains(The topic or board you" + " are looking for appears to be either missing or off limits to you.)," + "body:contains(Το θέμα ή πίνακας που ψάχνετε ή δεν υπάρχει ή δεν " + - "είναι προσβάσιμο από εσάς.)").size() > 0; + "είναι προσβάσιμο από εσάς.)").isEmpty(); } @Override diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java index 0d9135a4..55f3f16e 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java @@ -64,11 +64,11 @@ import gr.thmmy.mthmmy.base.BaseApplication; import gr.thmmy.mthmmy.model.UploadCategory; import gr.thmmy.mthmmy.model.UploadFile; import gr.thmmy.mthmmy.services.UploadsReceiver; -import gr.thmmy.mthmmy.utils.AppCompatSpinnerWithoutDefault; import gr.thmmy.mthmmy.utils.FileUtils; import gr.thmmy.mthmmy.utils.TakePhoto; import gr.thmmy.mthmmy.utils.parsing.ParseException; import gr.thmmy.mthmmy.utils.parsing.ParseTask; +import gr.thmmy.mthmmy.views.AppCompatSpinnerWithoutDefault; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import timber.log.Timber; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java index f7eb6e0d..2ea58fee 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java @@ -156,11 +156,11 @@ public class UploadFieldsBuilderActivity extends BaseActivity { private String buildTitle() { switch (typeRadio.getCheckedRadioButtonId()) { case R.id.upload_fields_builder_radio_button_exams: - return "[" + courseMinifiedName + "] - " + "Θέματα εξετάσεων " + getPeriod() + " " + year.getText().toString(); + return "[" + courseMinifiedName + "] " + "Θέματα εξετάσεων " + getPeriod() + " " + year.getText().toString(); case R.id.upload_fields_builder_radio_button_exam_solutions: - return "[" + courseMinifiedName + "] - " + "Λύσεις θεμάτων " + getPeriod() + " " + year.getText().toString(); + return "[" + courseMinifiedName + "] " + "Λύσεις θεμάτων " + getPeriod() + " " + year.getText().toString(); case R.id.upload_fields_builder_radio_button_notes: - return "[" + courseMinifiedName + "] - " + "Σημειώσεις παραδόσεων " + year.getText().toString(); + return "[" + courseMinifiedName + "] " + "Σημειώσεις παραδόσεων " + year.getText().toString(); default: return null; } diff --git a/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java b/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java index a4ea57dd..37f88876 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java @@ -45,10 +45,7 @@ import com.snatik.storage.Storage; import net.gotev.uploadservice.UploadService; -import java.io.BufferedReader; import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; import java.util.ArrayList; import gr.thmmy.mthmmy.R; @@ -67,6 +64,7 @@ import gr.thmmy.mthmmy.services.DownloadHelper; import gr.thmmy.mthmmy.services.UploadsReceiver; import gr.thmmy.mthmmy.session.SessionManager; import gr.thmmy.mthmmy.utils.FileUtils; +import gr.thmmy.mthmmy.utils.io.AssetUtils; import gr.thmmy.mthmmy.viewmodel.BaseViewModel; import me.zhanghai.android.materialprogressbar.MaterialProgressBar; import okhttp3.OkHttpClient; @@ -390,7 +388,7 @@ public abstract class BaseActivity extends AppCompatActivity { DrawerBuilder drawerBuilder = new DrawerBuilder() .withActivity(this) .withToolbar(toolbar) - .withDrawerWidthDp((int) BaseApplication.getInstance().getDpWidth() / 2) + .withDrawerWidthDp((int) BaseApplication.getInstance().getWidthInDp() / 2) .withSliderBackgroundColor(ContextCompat.getColor(this, R.color.primary_light)) .withAccountHeader(accountHeader) .withOnDrawerItemClickListener((view, position, drawerItem) -> { @@ -428,7 +426,7 @@ public abstract class BaseActivity extends AppCompatActivity { if (!sessionManager.isLoggedIn()) //When logged out or if user is guest startLoginActivity(); else - new LogoutTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); //Avoid delays between onPreExecute() and doInBackground() + showLogoutDialog(); } else if (drawerItem.equals(ABOUT_ID)) { if (!(BaseActivity.this instanceof AboutActivity)) { Intent intent = new Intent(BaseActivity.this, AboutActivity.class); @@ -543,6 +541,17 @@ public abstract class BaseActivity extends AppCompatActivity { //} } } + + private void showLogoutDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); + builder.setTitle("Logout"); + builder.setMessage("Are you sure that you want to logout?"); + builder.setPositiveButton("Yep", (dialogInterface, i) -> { + new LogoutTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); //Avoid delays between onPreExecute() and doInBackground() + }); + builder.setNegativeButton("Nope", (dialogInterface, i) -> {}); + builder.create().show(); + } //-----------------------------------------LOGOUT END----------------------------------------------- //---------------------------------------------BOOKMARKS-------------------------------------------- @@ -557,23 +566,20 @@ public abstract class BaseActivity extends AppCompatActivity { protected void setTopicBookmark(MenuItem thisPageBookmarkMenuButton) { this.thisPageBookmarkMenuButton = thisPageBookmarkMenuButton; - if (thisPageBookmark.matchExists(topicsBookmarked)) { + if (thisPageBookmark.matchExists(topicsBookmarked)) thisPageBookmarkMenuButton.setIcon(R.drawable.ic_bookmark_true_accent_24dp); - } else { + else thisPageBookmarkMenuButton.setIcon(R.drawable.ic_bookmark_false_accent_24dp); - } } protected void refreshTopicBookmark() { - if (thisPageBookmarkMenuButton == null) { - return; - } + if (thisPageBookmarkMenuButton == null) return; + loadSavedBookmarks(); - if (thisPageBookmark.matchExists(topicsBookmarked)) { + if (thisPageBookmark.matchExists(topicsBookmarked)) thisPageBookmarkMenuButton.setIcon(R.drawable.ic_bookmark_true_accent_24dp); - } else { + else thisPageBookmarkMenuButton.setIcon(R.drawable.ic_bookmark_false_accent_24dp); - } } protected void topicMenuBookmarkClick() { @@ -729,7 +735,6 @@ public abstract class BaseActivity extends AppCompatActivity { } } - @Override public void onRequestPermissionsResult(int permsRequestCode, @NonNull String[] permissions , @NonNull int[] grantResults) { @@ -754,13 +759,7 @@ public abstract class BaseActivity extends AppCompatActivity { } } - //Uses temp file - called after permission grant - private void downloadFile() { - if (checkPerms()) - prepareDownload(tempThmmyFile); - } - - private void prepareDownload(ThmmyFile thmmyFile) { + private void prepareDownload(@NonNull ThmmyFile thmmyFile) { String fileName = thmmyFile.getFilename(); if (FileUtils.fileNameExists(fileName)) openDownloadPrompt(thmmyFile); @@ -768,7 +767,7 @@ public abstract class BaseActivity extends AppCompatActivity { DownloadHelper.enqueueDownload(thmmyFile); } - private void openDownloadPrompt(final ThmmyFile thmmyFile) { + private void openDownloadPrompt(@NonNull final ThmmyFile thmmyFile) { View view = getLayoutInflater().inflate(R.layout.download_prompt_dialog, null); final BottomSheetDialog dialog = new BottomSheetDialog(this); dialog.setContentView(view); @@ -832,32 +831,14 @@ public abstract class BaseActivity extends AppCompatActivity { privacyPolicyTextView.setPadding(30, 20, 30, 20); privacyPolicyTextView.setTextColor(ContextCompat.getColor(this, R.color.primary_text)); SpannableConfiguration configuration = SpannableConfiguration.builder(this).linkResolver(new LinkResolverDef()).build(); - StringBuilder stringBuilder = new StringBuilder(); - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader(getAssets().open("PRIVACY.md"))); - String line; - - while ((line = reader.readLine()) != null) { - stringBuilder.append(line); - stringBuilder.append("\n"); - } - Markwon.setMarkdown(privacyPolicyTextView, configuration, stringBuilder.toString()); + + String privacyPolicy = AssetUtils.readFileToText(BaseActivity.this,"PRIVACY.md"); + if(privacyPolicy!=null){ + Markwon.setMarkdown(privacyPolicyTextView, configuration, privacyPolicy); AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); builder.setView(privacyPolicyTextView); builder.setPositiveButton("Close", (dialogInterface, i) -> dialogInterface.dismiss()); builder.show(); - } catch (IOException e) { - Timber.e(e, "Error reading Privacy Policy from assets."); - } catch (Exception e) { - Timber.e(e, "Error in Privacy Policy dialog."); - } finally { - try { - if (reader != null) - reader.close(); - } catch (IOException e) { - Timber.e(e, "Error in Privacy Policy dialog (closing reader)."); - } } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java index ba0e6a0f..da6fb9cc 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java +++ b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java @@ -13,6 +13,7 @@ import android.widget.ImageView; import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; +import com.bumptech.glide.Glide; import com.crashlytics.android.Crashlytics; import com.crashlytics.android.core.CrashlyticsCore; import com.franmontiel.persistentcookiejar.PersistentCookieJar; @@ -21,12 +22,10 @@ import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersisto import com.google.firebase.FirebaseApp; import com.google.firebase.analytics.FirebaseAnalytics; import com.itkacher.okhttpprofiler.OkHttpProfilerInterceptor; -import com.jakewharton.picasso.OkHttp3Downloader; import com.mikepenz.fontawesome_typeface_library.FontAwesome; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader; import com.mikepenz.materialdrawer.util.DrawerImageLoader; -import com.squareup.picasso.Picasso; import net.gotev.uploadservice.UploadService; import net.gotev.uploadservice.okhttp.OkHttpStack; @@ -40,7 +39,7 @@ import java.util.concurrent.TimeUnit; import gr.thmmy.mthmmy.BuildConfig; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.session.SessionManager; -import gr.thmmy.mthmmy.utils.CrashReportingTree; +import gr.thmmy.mthmmy.utils.crashreporting.CrashReportingTree; import io.fabric.sdk.android.Fabric; import okhttp3.CipherSuite; import okhttp3.ConnectionSpec; @@ -49,6 +48,8 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import timber.log.Timber; +import static gr.thmmy.mthmmy.activities.settings.SettingsActivity.DISPLAY_RELATIVE_TIME; + public class BaseApplication extends Application { private static BaseApplication baseApplication; //BaseApplication singleton @@ -60,11 +61,15 @@ public class BaseApplication extends Application { private OkHttpClient client; private SessionManager sessionManager; + private boolean displayRelativeTime; + //TODO: maybe use PreferenceManager.getDefaultSharedPreferences here as well? private static final String SHARED_PREFS = "ThmmySharedPrefs"; //Display Metrics - private static float dpWidth; + private static float widthDp; + private static int widthPxl, heightPxl; + public static BaseApplication getInstance() { return baseApplication; } @@ -104,12 +109,11 @@ public class BaseApplication extends Application { .addInterceptor(chain -> { Request request = chain.request(); HttpUrl oldUrl = chain.request().url(); - if (Objects.equals(chain.request().url().host(), "www.thmmy.gr")) { - if (!oldUrl.toString().contains("theme=4")) { + if (Objects.equals(chain.request().url().host(), "www.thmmy.gr") + && !oldUrl.toString().contains("theme=4")) { //Probably works but needs more testing: HttpUrl newUrl = oldUrl.newBuilder().addQueryParameter("theme", "4").build(); request = request.newBuilder().url(newUrl).build(); - } } return chain.proceed(request); }) @@ -137,11 +141,6 @@ public class BaseApplication extends Application { client = builder.build(); sessionManager = new SessionManager(client, cookieJar, sharedPrefsCookiePersistor, sharedPrefs, draftsPrefs); - Picasso picasso = new Picasso.Builder(getApplicationContext()) - .downloader(new OkHttp3Downloader(client)) - .build(); - - Picasso.setSingletonInstance(picasso); //All following Picasso (with Picasso.with(Context context) requests will use this Picasso object //Sets up upload service UploadService.NAMESPACE = BuildConfig.APPLICATION_ID; @@ -151,12 +150,12 @@ public class BaseApplication extends Application { DrawerImageLoader.init(new AbstractDrawerImageLoader() { @Override public void set(ImageView imageView, Uri uri, Drawable placeholder, String tag) { - Picasso.with(imageView.getContext()).load(uri).placeholder(placeholder).into(imageView); + Glide.with(imageView.getContext()).load(uri).circleCrop().error(placeholder).placeholder(placeholder).into(imageView); } @Override public void cancel(ImageView imageView) { - Picasso.with(imageView.getContext()).cancelRequest(imageView); + Glide.with(imageView.getContext()).clear(imageView); } @Override @@ -172,7 +171,13 @@ public class BaseApplication extends Application { }); DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics(); - dpWidth = displayMetrics.widthPixels / displayMetrics.density; + + widthPxl = displayMetrics.widthPixels; + widthDp = widthPxl / displayMetrics.density; + + heightPxl = displayMetrics.heightPixels; + + displayRelativeTime = settingsSharedPrefs.getBoolean(DISPLAY_RELATIVE_TIME, true); } //Getters @@ -188,10 +193,21 @@ public class BaseApplication extends Application { return sessionManager; } - public float getDpWidth() { - return dpWidth; + public float getWidthInDp() { + return widthDp; + } + + public int getWidthInPixels() { + return widthPxl; } + public int getHeightInPixels() { + return heightPxl; + } + + public boolean isDisplayRelativeTimeEnabled() { + return displayRelativeTime; + } //--------------------Firebase-------------------- diff --git a/app/src/main/java/gr/thmmy/mthmmy/model/ThmmyFile.java b/app/src/main/java/gr/thmmy/mthmmy/model/ThmmyFile.java index e071a6a2..91f7a5d7 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/model/ThmmyFile.java +++ b/app/src/main/java/gr/thmmy/mthmmy/model/ThmmyFile.java @@ -1,5 +1,7 @@ package gr.thmmy.mthmmy.model; +import android.webkit.URLUtil; + import java.net.URL; public class ThmmyFile { @@ -8,27 +10,36 @@ public class ThmmyFile { */ private static final String TAG = "ThmmyFile"; private final URL fileUrl; - private final String filename, fileInfo; + private final String fileName, fileInfo; /** * This constructor only creates a ThmmyFile object and does not download the file. * * @param fileUrl {@link URL} object with file's url - * @param filename {@link String} with desired file name + * @param fileName {@link String} with desired file name * @param fileInfo {@link String} with any extra information (like number of downloads) */ - public ThmmyFile(URL fileUrl, String filename, String fileInfo) { + public ThmmyFile(URL fileUrl, String fileName, String fileInfo) { this.fileUrl = fileUrl; - this.filename = filename; + if(fileName!=null) + this.fileName = fileName; + else + this.fileName = URLUtil.guessFileName(fileUrl.toString(), null, null); this.fileInfo = fileInfo; } + public ThmmyFile(URL fileUrl) { + this.fileUrl = fileUrl; + this.fileName = URLUtil.guessFileName(fileUrl.toString(), null, null); + this.fileInfo = null; + } + public URL getFileUrl() { return fileUrl; } public String getFilename() { - return filename; + return fileName; } public String getFileInfo() { diff --git a/app/src/main/java/gr/thmmy/mthmmy/model/Topic.java b/app/src/main/java/gr/thmmy/mthmmy/model/Topic.java index 207e2c2e..5397a511 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/model/Topic.java +++ b/app/src/main/java/gr/thmmy/mthmmy/model/Topic.java @@ -8,7 +8,7 @@ package gr.thmmy.mthmmy.model; * not, whether it's sticky or not and whether it contains an unread post or not.. */ public class Topic extends TopicSummary { - private final String lastPostUrl, stats; + private final String lastPostUrl, starter, stats; private final boolean locked, sticky, unread; // Suppresses default constructor @@ -16,6 +16,7 @@ public class Topic extends TopicSummary { private Topic() { super(); this.lastPostUrl = null; + this.starter = null; this.stats = null; this.locked = false; this.sticky = false; @@ -29,57 +30,31 @@ public class Topic extends TopicSummary { * @param topicUrl this topic's url * @param subject this topic's subject * @param starter this topic starter's username - * @param lastPost username of topic's last post's author + * @param lastUser username of topic's last post's author * @param lastPostUrl url of topic's last post * @param stats this topic's view and reply stats * @param locked whether this topic is locked or not * @param sticky whether this topic is sticky or not * @param unread whether this topic contains an unread post or not */ - public Topic(String topicUrl, String subject, String starter, String lastPost, String lastPostUrl, + public Topic(String topicUrl, String subject, String starter, String lastUser, String LastPostDateTime, String lastPostUrl, String stats, boolean locked, boolean sticky, boolean unread) { - super(topicUrl, subject, starter, lastPost); + super(topicUrl, subject, lastUser, LastPostDateTime); this.lastPostUrl = lastPostUrl; + this.starter = starter; this.stats = stats; this.locked = locked; this.sticky = sticky; this.unread = unread; } - /** - * Gets this topic's url. - * - * @return this topic's url - */ - public String getUrl() { - return topicUrl; - } - - /** - * Gets this topic's subject. - * - * @return this topic's subject - */ - public String getSubject() { - return subject; - } - /** * Gets this topic's starter username. * * @return this topic's starter username */ public String getStarter() { - return lastUser; - } - - /** - * Gets this topic's last post's date and time. - * - * @return last post's date and time - */ - public String getLastPostDateAndTime() { - return dateTimeModified; + return starter; } /** diff --git a/app/src/main/java/gr/thmmy/mthmmy/model/TopicSummary.java b/app/src/main/java/gr/thmmy/mthmmy/model/TopicSummary.java index 87e323c7..5374cc6a 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/model/TopicSummary.java +++ b/app/src/main/java/gr/thmmy/mthmmy/model/TopicSummary.java @@ -1,5 +1,8 @@ package gr.thmmy.mthmmy.model; +import static gr.thmmy.mthmmy.utils.parsing.ThmmyDateTimeParser.convertToTimestamp; +import static gr.thmmy.mthmmy.utils.parsing.ThmmyDateTimeParser.simplifyDateTime; + /** * Class that defines the summary of a topic. All member variables are declared final (thus no * setters are supplied). Class has one constructor and getter methods for all variables. @@ -7,10 +10,12 @@ package gr.thmmy.mthmmy.model; * time of this topic's last post.. */ public class TopicSummary { - final String topicUrl; - final String subject; - final String lastUser; - final String dateTimeModified; + private final String topicUrl; + private final String subject; + private final String lastUser; + private final String lastPostDateTime; + private final String lastPostSimplifiedDateTime; + private final String lastPostTimestamp; // Suppresses default constructor @SuppressWarnings("unused") @@ -18,23 +23,27 @@ public class TopicSummary { this.topicUrl = null; this.subject = null; this.lastUser = null; - this.dateTimeModified = null; + this.lastPostDateTime = null; + this.lastPostSimplifiedDateTime = null; + this.lastPostTimestamp = null; } /** - * Constructor specifying all class variables necessary to summarise this topic. All variables + * Constructor specifying all class variables necessary to summarize this topic. All variables * are declared final, once assigned they can not change. * * @param topicUrl this topic's url * @param subject this topic's subject - * @param lastUser username of this topic's last author - * @param dateTimeModified this topic's date and time of last post + * @param lastUser username of this topic's last post's author + * @param lastPostDateTime this topic's date and time of last post */ - public TopicSummary(String topicUrl, String subject, String lastUser, String dateTimeModified) { + public TopicSummary(String topicUrl, String subject, String lastUser, String lastPostDateTime) { this.topicUrl = topicUrl; this.subject = subject; this.lastUser = lastUser; - this.dateTimeModified = dateTimeModified; + this.lastPostDateTime = lastPostDateTime; + this.lastPostTimestamp = convertToTimestamp(lastPostDateTime); + this.lastPostSimplifiedDateTime = simplifyDateTime(lastPostDateTime); } /** @@ -56,9 +65,9 @@ public class TopicSummary { } /** - * Gets username of this topic's last author. + * Gets username of this topic's last post's author. * - * @return username of last author + * @return username of last post's author */ public String getLastUser() { return lastUser; @@ -69,7 +78,25 @@ public class TopicSummary { * * @return this topic's date and time of last post */ - public String getDateTimeModified() { - return dateTimeModified; + public String getLastPostDateTime() { + return lastPostDateTime; + } + + /** + * Gets this topic's simplified date and time of last post. + * + * @return this topic's simplified date and time of last post + */ + public String getLastPostSimplifiedDateTime() { + return lastPostSimplifiedDateTime; + } + + /** + * Gets the timestamp of this topic's last post. + * + * @return the timestamp of this topic's last post + */ + public String getLastPostTimestamp() { + return lastPostTimestamp; } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/services/DownloadHelper.java b/app/src/main/java/gr/thmmy/mthmmy/services/DownloadHelper.java index 65b5a426..9ba05eef 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/services/DownloadHelper.java +++ b/app/src/main/java/gr/thmmy/mthmmy/services/DownloadHelper.java @@ -6,6 +6,8 @@ import android.net.Uri; import android.os.Environment; import android.widget.Toast; +import androidx.annotation.NonNull; + import java.io.File; import gr.thmmy.mthmmy.base.BaseApplication; @@ -34,7 +36,8 @@ public class DownloadHelper { DownloadManager.Request request = new DownloadManager.Request(downloadURI); Cookie thmmyCookie = BaseApplication.getInstance().getSessionManager().getThmmyCookie(); - request.addRequestHeader("Cookie", thmmyCookie.name() + "=" + thmmyCookie.value()); + if(thmmyCookie!=null) + request.addRequestHeader("Cookie", thmmyCookie.name() + "=" + thmmyCookie.value()); request.setTitle(fileName); request.setMimeType(getMimeType(fileName)); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); @@ -49,6 +52,7 @@ public class DownloadHelper { } } + @NonNull private static String renameFileIfExists(String originalFileName) { final String dirPath = SAVE_DIR.getAbsolutePath(); File file = new File(dirPath, originalFileName); @@ -68,7 +72,6 @@ public class DownloadHelper { file = new File(dirPath, String.format(nameFormat, i)); } - return file.getName(); } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java index 4e91bc72..36490d56 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java +++ b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java @@ -8,6 +8,7 @@ import androidx.annotation.Nullable; import com.franmontiel.persistentcookiejar.PersistentCookieJar; import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; +import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; @@ -18,7 +19,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import gr.thmmy.mthmmy.utils.parsing.ParseException; -import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import okhttp3.Cookie; import okhttp3.FormBody; import okhttp3.HttpUrl; @@ -39,6 +39,8 @@ public class SessionManager { private static final HttpUrl loginUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php?action=login2"); public static final HttpUrl unreadUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php?action=unread;all;start=0;theme=4"); public static final HttpUrl shoutboxUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php?action=tpmod;sa=shoutbox;theme=4"); + private static final String baseLogoutLink = "https://www.thmmy.gr/smf/index.php?action=logout;sesc="; + private static final String baseMarkAllAsReadLink = "https://www.thmmy.gr/smf/index.php?action=markasread;sa=all;sesc="; private static final String guestName = "Guest"; //Response Codes @@ -63,7 +65,9 @@ public class SessionManager { private static final String USER_ID = "UserID"; private static final String AVATAR_LINK = "AvatarLink"; private static final String HAS_AVATAR = "HasAvatar"; + private static final String SESC = "Sesc"; private static final String LOGOUT_LINK = "LogoutLink"; + private static final String MARK_ALL_AS_READ_LINK = "MarkAllAsReadLink"; private static final String LOGGED_IN = "LoggedIn"; private static final String LOGIN_SCREEN_AS_DEFAULT = "LoginScreenAsDefault"; @@ -84,7 +88,7 @@ public class SessionManager { * Always call it in a separate thread. */ public int login(String... strings) { - Timber.i("Logging in..."); + Timber.d("Logging in..."); //Build the login request for each case Request request; @@ -112,10 +116,9 @@ public class SessionManager { try { //Make request & handle response Response response = client.newCall(request).execute(); - Document document = ParseHelpers.parse(response.body().string()); + Document document = Jsoup.parse(response.body().string()); - if (validateRetrievedCookies()) - { + if (validateRetrievedCookies()) { Timber.i("Login successful!"); setPersistentCookieSession(); //Store cookies @@ -129,7 +132,10 @@ public class SessionManager { if (avatar != null) editor.putString(AVATAR_LINK, avatar); editor.putBoolean(HAS_AVATAR, avatar != null); - editor.putString(LOGOUT_LINK, extractLogoutLink(document)); + String sesc = extractSesc(document); + editor.putString(SESC, sesc); + editor.putString(LOGOUT_LINK, generateLogoutLink(sesc)); + editor.putString(MARK_ALL_AS_READ_LINK, generateMarkAllAsReadLink(sesc)); editor.apply(); return SUCCESS; @@ -181,10 +187,10 @@ public class SessionManager { * Always call it in a separate thread in a way that won't hinder performance (e.g. after * fragments' data are retrieved). */ - public void validateSession() { + void validateSession() { Timber.i("Validating session..."); - if (isLoggedIn()) { + Timber.i("Refreshing session..."); int loginResult = login(); if (loginResult != FAILURE) return; @@ -204,21 +210,18 @@ public class SessionManager { setLoginScreenAsDefault(false); } - /** * Logout function. Always call it in a separate thread. */ public int logout() { Timber.i("Logging out..."); - - Request request = new Request.Builder() - .url(sharedPrefs.getString(LOGOUT_LINK, "LogoutLink")) - .build(); - try { + Request request = new Request.Builder() + .url(getLogoutLink()) + .build(); //Make request & handle response Response response = client.newCall(request).execute(); - Document document = ParseHelpers.parse(response.body().string()); + Document document = Jsoup.parse(response.body().string()); Elements loginButton = document.select("[value=Login]"); //Attempt to find login button if (!loginButton.isEmpty()) //If login button exists, logout was successful @@ -241,6 +244,15 @@ public class SessionManager { guestLogin(); } } + + public void refreshSescFromUrl(String url){ + String sesc = extractSescFromLink(url); + if(sesc!=null){ + setSesc(sesc); + setLogoutLink(generateLogoutLink(sesc)); + setMarkAsReadLink(sesc); + } + } //--------------------------------------AUTH ENDS----------------------------------------------- //---------------------------------------GETTERS------------------------------------------------ @@ -258,14 +270,31 @@ public class SessionManager { public Cookie getThmmyCookie() { List cookieList = cookieJar.loadForRequest(indexUrl); - for(Cookie cookie: cookieList) - { + for(Cookie cookie: cookieList) { if(cookie.name().equals("THMMYgrC00ki3")) return cookie; } return null; } + public String getMarkAllAsReadLink() { + String markAsReadLink = sharedPrefs.getString(MARK_ALL_AS_READ_LINK, null); + if(markAsReadLink == null){ //For older versions, extract it from logout link (otherwise user would have to login again) + String sesc = extractSescFromLink(getLogoutLink()); + if(sesc!=null) { + setSesc(sesc); + markAsReadLink = generateMarkAllAsReadLink(sesc); + setMarkAsReadLink(markAsReadLink); + return markAsReadLink; + } + } + return markAsReadLink; // Warning: it can be null + } + + private String getLogoutLink() { + return sharedPrefs.getString(LOGOUT_LINK, null); + } + public boolean hasAvatar() { return sharedPrefs.getBoolean(HAS_AVATAR, false); } @@ -280,6 +309,27 @@ public class SessionManager { //--------------------------------------GETTERS END--------------------------------------------- + //---------------------------------------SETTERS------------------------------------------------ + private void setSesc(String sesc){ + SharedPreferences.Editor editor = sharedPrefs.edit(); + editor.putString(SESC, sesc); + editor.apply(); + } + + private void setMarkAsReadLink(String markAllAsReadLink){ + SharedPreferences.Editor editor = sharedPrefs.edit(); + editor.putString(MARK_ALL_AS_READ_LINK, markAllAsReadLink); + editor.apply(); + } + + private void setLogoutLink(String logoutLink){ + SharedPreferences.Editor editor = sharedPrefs.edit(); + editor.putString(LOGOUT_LINK, logoutLink); + editor.apply(); + } + + //--------------------------------------SETTERS END--------------------------------------------- + //------------------------------------OTHER FUNCTIONS------------------------------------------- private boolean validateRetrievedCookies() { List cookieList = cookieJar.loadForRequest(indexUrl); @@ -353,7 +403,6 @@ public class SessionManager { return "User"; //return a default username } - @NonNull private int extractUserId(@NonNull Document doc) { try{ Elements elements = doc.select("a:containsOwn(Εμφάνιση των μηνυμάτων σας), a:containsOwn(Show own posts)"); @@ -383,17 +432,33 @@ public class SessionManager { return null; } - @NonNull - private String extractLogoutLink(@NonNull Document doc) { + private String extractSesc(@NonNull Document doc) { Elements logoutLink = doc.select("a[href^=https://www.thmmy.gr/smf/index.php?action=logout;sesc=]"); - if (!logoutLink.isEmpty()) { String link = logoutLink.first().attr("href"); - if (link != null && !link.isEmpty()) - return link; + return extractSescFromLink(link); + } + Timber.e(new ParseException("Parsing failed(extractSesc)"),"ParseException"); + return null; + } + + private String extractSescFromLink(String link){ + if (link != null){ + Pattern pattern = Pattern.compile(".+;sesc=(\\w+)"); + Matcher matcher = pattern.matcher(link); + if (matcher.find()) + return matcher.group(1); } - Timber.e(new ParseException("Parsing failed(logoutLink extraction)"),"ParseException"); - return "https://www.thmmy.gr/smf/index.php?action=logout"; //return a default link + Timber.e(new ParseException("Parsing failed(extractSescFromLogoutLink)"),"ParseException"); + return null; + } + + private String generateLogoutLink(String sesc){ + return baseLogoutLink + sesc; + } + + private String generateMarkAllAsReadLink(String sesc){ + return baseMarkAllAsReadLink + sesc; } //----------------------------------OTHER FUNCTIONS END----------------------------------------- diff --git a/app/src/main/java/gr/thmmy/mthmmy/session/ValidateSessionTask.java b/app/src/main/java/gr/thmmy/mthmmy/session/ValidateSessionTask.java new file mode 100644 index 00000000..b5c1392f --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/session/ValidateSessionTask.java @@ -0,0 +1,18 @@ +package gr.thmmy.mthmmy.session; + +import android.os.AsyncTask; + +import gr.thmmy.mthmmy.base.BaseApplication; + + +public class ValidateSessionTask extends AsyncTask { + @Override + protected Void doInBackground(String... params) { + BaseApplication.getInstance().getSessionManager().validateSession(); + return null; + } + + public boolean isRunning(){ + return getStatus() == AsyncTask.Status.RUNNING; + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CircleTransform.java b/app/src/main/java/gr/thmmy/mthmmy/utils/CircleTransform.java deleted file mode 100644 index c6da6010..00000000 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CircleTransform.java +++ /dev/null @@ -1,47 +0,0 @@ -package gr.thmmy.mthmmy.utils; - -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Paint; - -import com.squareup.picasso.Transformation; - -/** - * Used as parameter for PICASSO library's {@link com.squareup.picasso.RequestCreator#transform(Transformation) transform} method. - * @see com.squareup.picasso.Picasso Picasso - */ -public class CircleTransform implements Transformation { - @Override - public Bitmap transform(Bitmap source) { - int size = Math.min(source.getWidth(), source.getHeight()); - - int x = (source.getWidth() - size) / 2; - int y = (source.getHeight() - size) / 2; - - Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); - if (squaredBitmap != source) - source.recycle(); - - // For GIF images - Bitmap.Config config = source.getConfig() != null ? source.getConfig() : Bitmap.Config.ARGB_8888; - Bitmap bitmap = Bitmap.createBitmap(size, size, config); - - Canvas canvas = new Canvas(bitmap); - Paint paint = new Paint(); - BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); - paint.setShader(shader); - paint.setAntiAlias(true); - - float r = size / 2f; - canvas.drawCircle(r, r, r, paint); - - squaredBitmap.recycle(); - return bitmap; - } - - @Override - public String key() { - return "circle"; - } -} \ No newline at end of file diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/DateTimeUtils.java b/app/src/main/java/gr/thmmy/mthmmy/utils/DateTimeUtils.java new file mode 100644 index 00000000..b65fd2f4 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/DateTimeUtils.java @@ -0,0 +1,73 @@ +package gr.thmmy.mthmmy.utils; + +import androidx.annotation.VisibleForTesting; + +import static android.text.format.DateUtils.DAY_IN_MILLIS; +import static android.text.format.DateUtils.HOUR_IN_MILLIS; +import static android.text.format.DateUtils.MINUTE_IN_MILLIS; +import static android.text.format.DateUtils.SECOND_IN_MILLIS; +import static android.text.format.DateUtils.YEAR_IN_MILLIS; + +public class DateTimeUtils { + + private static final long MONTH_IN_MILLIS = 30*DAY_IN_MILLIS; + private static final long DECADE_IN_MILLIS = 10*YEAR_IN_MILLIS; + + @VisibleForTesting + public static String getRelativeTimeSpanString(long time) { + long now = System.currentTimeMillis(); + + boolean past = (now >= time); + long duration = Math.abs(now - time); + String format; + long count, mod; + if(duration < 45*SECOND_IN_MILLIS) + return "just now"; + else if (duration < 45*MINUTE_IN_MILLIS) { + count = duration/MINUTE_IN_MILLIS; + mod = duration % MINUTE_IN_MILLIS; + if(mod >= 30*SECOND_IN_MILLIS) + count += 1; + format = "%dm"; + } else if (duration < 22*HOUR_IN_MILLIS) { + count = duration/HOUR_IN_MILLIS; + format = "%dh"; + mod = (duration%HOUR_IN_MILLIS)/MINUTE_IN_MILLIS; + if(count<3 && mod>9 && mod<51){ + if(count==0) + format = mod +"m"; + else + format = format + " " + mod +"m"; + } + else if(mod >= 30) + count += 1; + } else if (duration < 26*DAY_IN_MILLIS) { + count = duration/DAY_IN_MILLIS; + format = "%dd"; + mod = duration % DAY_IN_MILLIS; + if(mod >= 12*HOUR_IN_MILLIS) + count += 1; + } else if (duration < 320*DAY_IN_MILLIS) { + count = duration/MONTH_IN_MILLIS; + format = "%d month"; + mod = duration % MONTH_IN_MILLIS; + if(mod >= 15*DAY_IN_MILLIS) + count += 1; + if(count>1) + format = format + 's'; + } else if (duration < DECADE_IN_MILLIS) { + count = duration/YEAR_IN_MILLIS; + format = "%d year"; + mod = duration % YEAR_IN_MILLIS; + if(mod >= 183*DAY_IN_MILLIS) + count += 1; + if(count>1) + format = format + 's'; + } + else + return past ? "a long time ago": "in the distant future"; + + format = past ? format : "in " + format; + return String.format(format, (int) count); + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java b/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java index 524a4033..a8c42c8b 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java @@ -10,16 +10,15 @@ import java.io.IOException; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.base.BaseApplication; +import gr.thmmy.mthmmy.utils.crashreporting.CrashReporter; import gr.thmmy.mthmmy.utils.parsing.ParseException; -import gr.thmmy.mthmmy.utils.parsing.ParseHelpers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import timber.log.Timber; public abstract class NetworkTask extends ExternalAsyncTask> { - - protected OnNetworkTaskFinishedListener onNetworkTaskFinishedListener; + private OnNetworkTaskFinishedListener onNetworkTaskFinishedListener; public NetworkTask(OnTaskStartedListener onTaskStartedListener, OnTaskCancelledListener onTaskCancelledListener, OnNetworkTaskFinishedListener onNetworkTaskFinishedListener) { @@ -47,14 +46,14 @@ public abstract class NetworkTask extends ExternalAsyncTask try { responseBodyString = response.body().string(); } catch (NullPointerException npe) { - Timber.wtf(npe, "Invalid response. Detatails: https://square.github.io/okhttp/3.x/okhttp/okhttp3/Response.html#body--"); + Timber.wtf(npe, "Invalid response. Details: https://square.github.io/okhttp/3.x/okhttp/okhttp3/Response.html#body--"); return new Parcel<>(NetworkResultCodes.NETWORK_ERROR, null); } catch (IOException e) { Timber.e(e, "Error getting response body string"); return new Parcel<>(NetworkResultCodes.NETWORK_ERROR, null); } try { - T data = performTask(ParseHelpers.parse(responseBodyString), response); + T data = performTask(Jsoup.parse(responseBodyString), response); int resultCode = getResultCode(response, data); return new Parcel<>(resultCode, data); } catch (ParseException pe) { diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CrashReporter.java b/app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReporter.java similarity index 98% rename from app/src/main/java/gr/thmmy/mthmmy/utils/CrashReporter.java rename to app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReporter.java index 67ba0395..65011440 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CrashReporter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReporter.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.utils.crashreporting; import com.crashlytics.android.Crashlytics; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CrashReportingTree.java b/app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReportingTree.java similarity index 94% rename from app/src/main/java/gr/thmmy/mthmmy/utils/CrashReportingTree.java rename to app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReportingTree.java index 8f85459a..f378000e 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CrashReportingTree.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/crashreporting/CrashReportingTree.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.utils.crashreporting; import android.util.Log; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/io/AssetUtils.java b/app/src/main/java/gr/thmmy/mthmmy/utils/io/AssetUtils.java new file mode 100644 index 00000000..2ceb81d4 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/io/AssetUtils.java @@ -0,0 +1,39 @@ +package gr.thmmy.mthmmy.utils.io; + +import android.content.Context; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import timber.log.Timber; + +public class AssetUtils { + public static String readFileToText(Context context, String fileName) { + StringBuilder stringBuilder = new StringBuilder(); + BufferedReader reader = null; + try { + reader = new BufferedReader(new InputStreamReader(context.getAssets().open(fileName))); + String line; + + while ((line = reader.readLine()) != null) { + stringBuilder.append(line); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } catch (IOException e) { + Timber.e(e, "IO error reading file %s from assets.", fileName); + } catch (Exception e) { + Timber.e(e, "Error reading file %s from assets.", fileName); + } finally { + try { + if (reader != null) + reader.close(); + } catch (IOException e) { + Timber.e(e, "Error in AssetUtils (closing reader)."); + } + } + return null; + } +} + diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java index 206d4c3b..50ca9870 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java @@ -1,9 +1,7 @@ package gr.thmmy.mthmmy.utils.parsing; -import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -import org.jsoup.nodes.TextNode; import org.jsoup.select.Elements; import java.util.ArrayList; @@ -11,8 +9,6 @@ import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -import timber.log.Timber; - /** * This class consists exclusively of static classes (enums) and methods (excluding methods of inner * classes). It can be used to resolve a page's language and state or fix embedded videos html code @@ -188,56 +184,6 @@ public class ParseHelpers { else return ""; } - /** - * Method that replaces CloudFlare-obfuscated emails with deobfuscated ones - * Replace Jsoup.parse with this wherever needed - * - * @param html html to parse - * @return a document with deobfuscated emails - */ - public static Document parse(String html) { - Document document = Jsoup.parse(html); - deobfuscateElements(document.select("span.__cf_email__,a.__cf_email__"), true); - return document; - } - - /** - * Use this method instead of parse() if you are targeting specific elements - */ - public static void deobfuscateElements(Elements elements, boolean found) { - if (!found) - elements = elements.select("span.__cf_email__,a.__cf_email__"); - - for (Element obfuscatedElement : elements) { - String deobfuscatedEmail = deobfuscateEmail(obfuscatedElement.attr("data-cfemail")); - if (obfuscatedElement.is("span")) { - Element parent = obfuscatedElement.parent(); - if (parent.is("a") && parent.attr("href").contains("email-protection")) - parent.attr("href", "mailto:" + deobfuscatedEmail); - } else if (obfuscatedElement.attr("href").contains("email-protection")) - obfuscatedElement.attr("href", "mailto:" + deobfuscatedEmail); - - obfuscatedElement.replaceWith(new TextNode(deobfuscatedEmail, "")); - } - } - - - /** - * @param obfuscatedEmail CloudFlare-obfuscated email - * @return deobfuscated email - */ - private static String deobfuscateEmail(String obfuscatedEmail) { - //Deobfuscate - final StringBuilder stringBuilder = new StringBuilder(); - final int r = Integer.parseInt(obfuscatedEmail.substring(0, 2), 16); - for (int n = 2; n < obfuscatedEmail.length(); n += 2) { - final int i = Integer.parseInt(obfuscatedEmail.substring(n, n + 2), 16) ^ r; - stringBuilder.append(Character.toString((char) i)); - } - - Timber.d("Email deobfuscated."); - return stringBuilder.toString(); - } public static String emojiTagToHtml(String emojiTagedString) { HashMap tagToHtmlMap = new HashMap<>(); diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseTask.java b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseTask.java index 6936100f..9ead4364 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseTask.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseTask.java @@ -3,6 +3,7 @@ package gr.thmmy.mthmmy.utils.parsing; import android.os.AsyncTask; import android.widget.Toast; +import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; @@ -20,7 +21,7 @@ import timber.log.Timber; */ public abstract class ParseTask extends AsyncTask { protected String url; - protected enum ResultCode { + public enum ResultCode { SUCCESS, PARSING_ERROR, NETWORK_ERROR, OTHER_ERROR } @@ -41,7 +42,7 @@ public abstract class ParseTask extends AsyncTask 12:16:48, but October 03, 2019, 16:40:18 remains as is + @VisibleForTesting + static String purifyTodayDateTime(String dateTime){ + return dateTime.replaceAll("(Today at |Σήμερα στις )(.+)", "$2"); + } + + // Converts e.g. 12:16:48 -> 12:16, October 03, 2019, 16:40:18 -> 12:16 October 03, 2019, 16:40 + private static String removeSeconds(String dateTime){ + return dateTime.replaceAll("(.*):\\d+($|\\s.*)", "$1$2"); + } + + @VisibleForTesting + private static DateTimeZone getDtz(){ + if(!BaseApplication.getInstance().getSessionManager().isLoggedIn()) + return DateTimeZone.forID("Europe/Athens"); + else + return DateTimeZone.getDefault(); + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CenterVerticalSpan.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/CenterVerticalSpan.java similarity index 96% rename from app/src/main/java/gr/thmmy/mthmmy/utils/CenterVerticalSpan.java rename to app/src/main/java/gr/thmmy/mthmmy/utils/ui/CenterVerticalSpan.java index 104dd01e..8d0c3d60 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CenterVerticalSpan.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/CenterVerticalSpan.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.utils.ui; import android.graphics.Canvas; import android.graphics.Paint; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ImageDownloadDialogBuilder.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ImageDownloadDialogBuilder.java new file mode 100644 index 00000000..33b63d79 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ImageDownloadDialogBuilder.java @@ -0,0 +1,65 @@ +package gr.thmmy.mthmmy.utils.ui; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.content.ContextWrapper; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; + +import java.net.MalformedURLException; +import java.net.URL; + +import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseActivity; +import gr.thmmy.mthmmy.base.BaseApplication; +import gr.thmmy.mthmmy.model.ThmmyFile; +import timber.log.Timber; + +import static android.content.Context.CLIPBOARD_SERVICE; + +public class ImageDownloadDialogBuilder extends AlertDialog.Builder{ + private static final String[] colors = {"Copy image location", "Save Image"}; + + private Context context; + private String imageURL; + + public ImageDownloadDialogBuilder(@NonNull Context context, String imageURL) { + super(context); + this.context = context; + this.imageURL = imageURL; + + setItems(colors, (dialog, which) -> { + if(which == 0) + copyUrlToClipboard(); + else { + try { + getBaseActivity().downloadFile(new ThmmyFile(new URL(imageURL))); + } catch (MalformedURLException e) { + Timber.e(e, "Exception downloading image (MalformedURLException)"); + } catch (NullPointerException e) { + Timber.e(e, "Exception downloading image (NullPointerException)"); + } + } + }); + } + + private void copyUrlToClipboard(){ + ClipboardManager clipboard = (ClipboardManager) BaseApplication.getInstance().getSystemService(CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("ReactiveWebViewCopiedText", imageURL); + clipboard.setPrimaryClip(clip); + Toast.makeText(BaseApplication.getInstance().getApplicationContext(),context.getString(R.string.link_copied_msg),Toast.LENGTH_SHORT).show(); + } + + private BaseActivity getBaseActivity() { + Context baseActivityContext = context; + while (baseActivityContext instanceof ContextWrapper) { + if (context instanceof BaseActivity) + return (BaseActivity) context; + baseActivityContext = ((ContextWrapper)context).getBaseContext(); + } + return null; + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ui/PhotoViewUtils.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/PhotoViewUtils.java new file mode 100644 index 00000000..1d5dc485 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/PhotoViewUtils.java @@ -0,0 +1,63 @@ +package gr.thmmy.mthmmy.utils.ui; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.view.ViewGroup; +import android.view.Window; + +import androidx.annotation.Nullable; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; +import com.github.chrisbanes.photoview.PhotoView; + +import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseApplication; + +public class PhotoViewUtils { + private final static int screenWidth = BaseApplication.getInstance().getWidthInPixels(); + private final static int screenHeight = BaseApplication.getInstance().getHeightInPixels(); + + public static void displayPhotoViewImage(Context context, String imageURL) { + Dialog builder = new Dialog(context); + builder.requestWindowFeature(Window.FEATURE_NO_TITLE); + builder.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + builder.getWindow().setBackgroundDrawable( + new ColorDrawable(android.graphics.Color.TRANSPARENT)); + + PhotoView photoView = new PhotoView(context); + photoView.setLayoutParams(new ViewGroup.LayoutParams(screenWidth, screenHeight)); + Glide.with(context) + .load(imageURL) + .fitCenter() + .error(R.drawable.ic_file_not_found) + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + photoView.setZoomable(false); + return false; + } + + @Override + public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + photoView.setOnLongClickListener(v -> { + ImageDownloadDialogBuilder imageDownloadDialogBuilder = new ImageDownloadDialogBuilder(context, imageURL); + imageDownloadDialogBuilder.show(); + return false; + }); + return false; + } + }) + .into(photoView); + + builder.addContentView(photoView, new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT)); + builder.show(); + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareFABBehavior.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareFABBehavior.java similarity index 98% rename from app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareFABBehavior.java rename to app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareFABBehavior.java index a77502f3..78c5f196 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareFABBehavior.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareFABBehavior.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.utils.ui; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareLinearBehavior.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareLinearBehavior.java similarity index 99% rename from app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareLinearBehavior.java rename to app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareLinearBehavior.java index cc877deb..1a7a75b8 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/ScrollAwareLinearBehavior.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ui/ScrollAwareLinearBehavior.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.utils.ui; import android.animation.Animator; import android.content.Context; diff --git a/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java b/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java index bac3952a..8f8f4c3a 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java +++ b/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java @@ -132,7 +132,7 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa int pageRequested = pageIndicatorIndex.getValue() - 1; if (pageRequested != currentPageIndex - 1) { Timber.i("Changing to page " + pageRequested + 1); - loadUrl(ParseHelpers.getBaseURL(topicUrl) + "." + String.valueOf(pageRequested * 15)); + loadUrl(ParseHelpers.getBaseURL(topicUrl) + "." + pageRequested * 15); pageIndicatorIndex.setValue(pageRequested + 1); } else { stopLoading(); diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/AppCompatSpinnerWithoutDefault.java b/app/src/main/java/gr/thmmy/mthmmy/views/AppCompatSpinnerWithoutDefault.java similarity index 99% rename from app/src/main/java/gr/thmmy/mthmmy/utils/AppCompatSpinnerWithoutDefault.java rename to app/src/main/java/gr/thmmy/mthmmy/views/AppCompatSpinnerWithoutDefault.java index 77293dfe..e7ba0e4c 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/AppCompatSpinnerWithoutDefault.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/AppCompatSpinnerWithoutDefault.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.views; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CustomLinearLayoutManager.java b/app/src/main/java/gr/thmmy/mthmmy/views/CustomLinearLayoutManager.java similarity index 97% rename from app/src/main/java/gr/thmmy/mthmmy/utils/CustomLinearLayoutManager.java rename to app/src/main/java/gr/thmmy/mthmmy/views/CustomLinearLayoutManager.java index f4dd5042..50621846 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CustomLinearLayoutManager.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/CustomLinearLayoutManager.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.views; import android.content.Context; diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CustomRecyclerView.java b/app/src/main/java/gr/thmmy/mthmmy/views/CustomRecyclerView.java similarity index 98% rename from app/src/main/java/gr/thmmy/mthmmy/utils/CustomRecyclerView.java rename to app/src/main/java/gr/thmmy/mthmmy/views/CustomRecyclerView.java index 766e7207..1b605cdd 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CustomRecyclerView.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/CustomRecyclerView.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.views; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/gr/thmmy/mthmmy/views/ReactiveWebView.java b/app/src/main/java/gr/thmmy/mthmmy/views/ReactiveWebView.java new file mode 100644 index 00000000..7c9efdb8 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/views/ReactiveWebView.java @@ -0,0 +1,93 @@ +package gr.thmmy.mthmmy.views; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.webkit.WebView; +import android.widget.Toast; + +import gr.thmmy.mthmmy.R; +import gr.thmmy.mthmmy.base.BaseApplication; +import gr.thmmy.mthmmy.utils.ui.ImageDownloadDialogBuilder; + +import static android.content.Context.CLIPBOARD_SERVICE; +import static gr.thmmy.mthmmy.utils.ui.PhotoViewUtils.displayPhotoViewImage; + +public class ReactiveWebView extends WebView { + private final static long MAX_TOUCH_DURATION = 100; + private final Context context; + private long downTime; + + + public ReactiveWebView(Context context) { + super(context); + this.context = context; + init(); + } + + public ReactiveWebView(Context context, AttributeSet attrs) { + super(context, attrs); + this.context = context; + init(); + } + + public ReactiveWebView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + this.context = context; + init(); + } + + private void init(){ + setOnLongClickListener(); + this.setVerticalScrollBarEnabled(false); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + downTime = event.getEventTime(); + break; + case MotionEvent.ACTION_UP: + if(event.getEventTime() - downTime <= MAX_TOUCH_DURATION) + performClick(); + break; + default: + break; + } + return super.onTouchEvent(event); + } + + @Override + public boolean performClick() { + WebView.HitTestResult result = this.getHitTestResult(); + if(result.getType() == WebView.HitTestResult.IMAGE_TYPE){ + String imageURL = result.getExtra(); + displayPhotoViewImage(context, imageURL); + } + return super.performClick(); + } + + private void setOnLongClickListener(){ + this.setOnLongClickListener(v -> { + HitTestResult result = ReactiveWebView.this.getHitTestResult(); + if(result.getType() == HitTestResult.SRC_ANCHOR_TYPE) + copyUrlToClipboard(result.getExtra()); + else if(result.getType() == WebView.HitTestResult.IMAGE_TYPE) { + String imageURL = result.getExtra(); + ImageDownloadDialogBuilder builder = new ImageDownloadDialogBuilder(context,imageURL); + builder.show(); + } + return false; + }); + } + + private void copyUrlToClipboard(String urlToCopy){ + ClipboardManager clipboard = (ClipboardManager) BaseApplication.getInstance().getSystemService(CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("ReactiveWebViewCopiedText", urlToCopy); + clipboard.setPrimaryClip(clip); + Toast.makeText(BaseApplication.getInstance().getApplicationContext(),context.getString(R.string.link_copied_msg),Toast.LENGTH_SHORT).show(); + } +} diff --git a/app/src/main/java/gr/thmmy/mthmmy/views/RelativeTimeTextView.java b/app/src/main/java/gr/thmmy/mthmmy/views/RelativeTimeTextView.java new file mode 100644 index 00000000..43ea351f --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/views/RelativeTimeTextView.java @@ -0,0 +1,232 @@ +package gr.thmmy.mthmmy.views; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.res.TypedArray; +import android.os.Handler; +import android.os.Parcel; +import android.os.Parcelable; +import android.text.format.DateUtils; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +import java.lang.ref.WeakReference; + +import gr.thmmy.mthmmy.R; + +import static gr.thmmy.mthmmy.utils.DateTimeUtils.getRelativeTimeSpanString; + +/** + * A modified version of https://github.com/curioustechizen/android-ago + */ +@SuppressLint("AppCompatCustomView") +public class RelativeTimeTextView extends TextView { + + private static final long INITIAL_UPDATE_INTERVAL = DateUtils.MINUTE_IN_MILLIS; + + private long mReferenceTime; + private Handler mHandler = new Handler(); + private UpdateTimeRunnable mUpdateTimeTask; + private boolean isUpdateTaskRunning = false; + + public RelativeTimeTextView(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public RelativeTimeTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, + R.styleable.RelativeTimeTextView, 0, 0); + String referenceTimeText; + try { + referenceTimeText = a.getString(R.styleable.RelativeTimeTextView_reference_time); + } finally { + a.recycle(); + } + + try { + mReferenceTime = Long.valueOf(referenceTimeText); + } catch (NumberFormatException nfe) { + /* + * TODO: Better exception handling + */ + mReferenceTime = -1L; + } + + setReferenceTime(mReferenceTime); + + } + + /** + * Sets the reference time for this view. At any moment, the view will render a relative time period relative to the time set here. + *

+ * This value can also be set with the XML attribute {@code reference_time} + * @param referenceTime The timestamp (in milliseconds since epoch) that will be the reference point for this view. + */ + public void setReferenceTime(long referenceTime) { + this.mReferenceTime = referenceTime; + + /* + * Note that this method could be called when a row in a ListView is recycled. + * Hence, we need to first stop any currently running schedules (for example from the recycled view. + */ + stopTaskForPeriodicallyUpdatingRelativeTime(); + + /* + * Instantiate a new runnable with the new reference time + */ + initUpdateTimeTask(); + + /* + * Start a new schedule. + */ + startTaskForPeriodicallyUpdatingRelativeTime(); + + /* + * Finally, update the text display. + */ + updateTextDisplay(); + } + + private void updateTextDisplay() { + /* + * TODO: Validation, Better handling of negative cases + */ + if (this.mReferenceTime == -1L) + return; + setText(getRelativeTimeSpanString(mReferenceTime)); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + startTaskForPeriodicallyUpdatingRelativeTime(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + stopTaskForPeriodicallyUpdatingRelativeTime(); + } + + @Override + protected void onVisibilityChanged(View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); + if (visibility == GONE || visibility == INVISIBLE) { + stopTaskForPeriodicallyUpdatingRelativeTime(); + } else { + startTaskForPeriodicallyUpdatingRelativeTime(); + } + } + + private void startTaskForPeriodicallyUpdatingRelativeTime() { + if(mUpdateTimeTask.isDetached()) initUpdateTimeTask(); + mHandler.post(mUpdateTimeTask); + isUpdateTaskRunning = true; + } + + private void initUpdateTimeTask() { + mUpdateTimeTask = new UpdateTimeRunnable(this, mReferenceTime); + } + + private void stopTaskForPeriodicallyUpdatingRelativeTime() { + if(isUpdateTaskRunning) { + mUpdateTimeTask.detach(); + mHandler.removeCallbacks(mUpdateTimeTask); + isUpdateTaskRunning = false; + } + } + + @Override + public Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + SavedState ss = new SavedState(superState); + ss.referenceTime = mReferenceTime; + return ss; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + if (!(state instanceof SavedState)) { + super.onRestoreInstanceState(state); + return; + } + + SavedState ss = (SavedState)state; + mReferenceTime = ss.referenceTime; + super.onRestoreInstanceState(ss.getSuperState()); + } + + public static class SavedState extends BaseSavedState { + + private long referenceTime; + + public SavedState(Parcelable superState) { + super(superState); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeLong(referenceTime); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + + private SavedState(Parcel in) { + super(in); + referenceTime = in.readLong(); + } + } + + private static class UpdateTimeRunnable implements Runnable { + + private long mRefTime; + private final WeakReference weakRefRttv; + + UpdateTimeRunnable(RelativeTimeTextView rttv, long refTime) { + this.mRefTime = refTime; + weakRefRttv = new WeakReference<>(rttv); + } + + boolean isDetached() { + return weakRefRttv.get() == null; + } + + void detach() { + weakRefRttv.clear(); + } + + @Override + public void run() { + RelativeTimeTextView rttv = weakRefRttv.get(); + if (rttv == null) return; + long difference = Math.abs(System.currentTimeMillis() - mRefTime); + long interval = INITIAL_UPDATE_INTERVAL; + if (difference > DateUtils.WEEK_IN_MILLIS) { + interval = DateUtils.WEEK_IN_MILLIS; + } else if (difference > DateUtils.DAY_IN_MILLIS) { + interval = DateUtils.DAY_IN_MILLIS; + } else if (difference > DateUtils.HOUR_IN_MILLIS) { + interval = DateUtils.HOUR_IN_MILLIS; + } + rttv.updateTextDisplay(); + rttv.mHandler.postDelayed(this, interval); + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ToggledBackgroundButton.java b/app/src/main/java/gr/thmmy/mthmmy/views/ToggledBackgroundButton.java similarity index 95% rename from app/src/main/java/gr/thmmy/mthmmy/utils/ToggledBackgroundButton.java rename to app/src/main/java/gr/thmmy/mthmmy/views/ToggledBackgroundButton.java index 6c189e87..296ecf77 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/ToggledBackgroundButton.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/ToggledBackgroundButton.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.utils; +package gr.thmmy.mthmmy.views; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EditorView.java similarity index 99% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/EditorView.java index 97f7d42f..051bfdfb 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EditorView.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; import android.animation.Animator; import android.annotation.SuppressLint; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiInputField.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiInputField.java similarity index 81% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiInputField.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiInputField.java index 0cdccd60..88d2e790 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiInputField.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiInputField.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; import android.view.inputmethod.InputConnection; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboard.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboard.java similarity index 99% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboard.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboard.java index 903ff5fe..dc5b06e5 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboard.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboard.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; import android.content.Context; import android.os.Handler; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboardAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboardAdapter.java similarity index 98% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboardAdapter.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboardAdapter.java index efcb9519..1f857a16 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/EmojiKeyboardAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/EmojiKeyboardAdapter.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; import android.graphics.drawable.AnimationDrawable; import android.view.LayoutInflater; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/FormatButtonsAdapter.java similarity index 98% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/FormatButtonsAdapter.java index 732149ae..699bf760 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/FormatButtonsAdapter.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/IEmojiKeyboard.java b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/IEmojiKeyboard.java similarity index 95% rename from app/src/main/java/gr/thmmy/mthmmy/editorview/IEmojiKeyboard.java rename to app/src/main/java/gr/thmmy/mthmmy/views/editorview/IEmojiKeyboard.java index 3ec906f2..07ab89bb 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/IEmojiKeyboard.java +++ b/app/src/main/java/gr/thmmy/mthmmy/views/editorview/IEmojiKeyboard.java @@ -1,4 +1,4 @@ -package gr.thmmy.mthmmy.editorview; +package gr.thmmy.mthmmy.views.editorview; public interface IEmojiKeyboard { /** diff --git a/app/src/main/res/drawable/ic_file_not_found.xml b/app/src/main/res/drawable/ic_file_not_found.xml new file mode 100644 index 00000000..78615445 --- /dev/null +++ b/app/src/main/res/drawable/ic_file_not_found.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..20950264 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_mark_as_read.xml b/app/src/main/res/drawable/ic_mark_as_read.xml new file mode 100644 index 00000000..04b4b785 --- /dev/null +++ b/app/src/main/res/drawable/ic_mark_as_read.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout-v21/activity_profile.xml b/app/src/main/res/layout-v21/activity_profile.xml index c5da47d9..34064eaf 100644 --- a/app/src/main/res/layout-v21/activity_profile.xml +++ b/app/src/main/res/layout-v21/activity_profile.xml @@ -37,7 +37,7 @@ android:id="@+id/user_thumbnail" android:layout_width="@dimen/profile_activity_avatar_size" android:layout_height="@dimen/profile_activity_avatar_size" - android:layout_marginBottom="5dp" + android:layout_marginBottom="6dp" android:layout_gravity="center" android:adjustViewBounds="true" android:contentDescription="@string/post_thumbnail" @@ -50,6 +50,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="6dp" + android:paddingBottom="4dp" + android:textAlignment="center" android:textColor="@color/primary_text" android:visibility="gone"/> @@ -113,7 +118,7 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margins" - app:layout_behavior="gr.thmmy.mthmmy.utils.ScrollAwareFABBehavior" + app:layout_behavior="gr.thmmy.mthmmy.utils.ui.ScrollAwareFABBehavior" app:srcCompat="@drawable/ic_pm_fab"/> diff --git a/app/src/main/res/layout-v21/activity_topic_post_row.xml b/app/src/main/res/layout-v21/activity_topic_post_row.xml index d1464a61..e51a2887 100644 --- a/app/src/main/res/layout-v21/activity_topic_post_row.xml +++ b/app/src/main/res/layout-v21/activity_topic_post_row.xml @@ -225,7 +225,7 @@ android:layout_height="match_parent" android:layout_marginBottom="16dp"> - + + + + diff --git a/app/src/main/res/layout/activity_create_content.xml b/app/src/main/res/layout/activity_create_content.xml index 7e6a9b40..5c42f68b 100644 --- a/app/src/main/res/layout/activity_create_content.xml +++ b/app/src/main/res/layout/activity_create_content.xml @@ -46,7 +46,7 @@ android:inputType="text"/> - - diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 8a51cbd9..097805a6 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -37,7 +37,7 @@ android:id="@+id/user_thumbnail" android:layout_width="@dimen/profile_activity_avatar_size" android:layout_height="@dimen/profile_activity_avatar_size" - android:layout_marginBottom="5dp" + android:layout_marginBottom="6dp" android:layout_gravity="center" android:adjustViewBounds="true" android:contentDescription="@string/post_thumbnail" @@ -49,6 +49,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="6dp" + android:paddingBottom="4dp" + android:textAlignment="center" android:textColor="@color/primary_text" android:visibility="gone"/> @@ -112,7 +117,7 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margins" - app:layout_behavior="gr.thmmy.mthmmy.utils.ScrollAwareFABBehavior" + app:layout_behavior="gr.thmmy.mthmmy.utils.ui.ScrollAwareFABBehavior" app:srcCompat="@drawable/ic_pm_fab"/> diff --git a/app/src/main/res/layout/activity_topic.xml b/app/src/main/res/layout/activity_topic.xml index b61c41cf..24793374 100644 --- a/app/src/main/res/layout/activity_topic.xml +++ b/app/src/main/res/layout/activity_topic.xml @@ -51,7 +51,7 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="gr.thmmy.mthmmy.activities.topic.TopicActivity" /> - + app:layout_behavior="gr.thmmy.mthmmy.utils.ui.ScrollAwareLinearBehavior"> diff --git a/app/src/main/res/layout/activity_topic_edit_row.xml b/app/src/main/res/layout/activity_topic_edit_row.xml index 39b67582..a5875f53 100644 --- a/app/src/main/res/layout/activity_topic_edit_row.xml +++ b/app/src/main/res/layout/activity_topic_edit_row.xml @@ -76,7 +76,7 @@ android:textSize="10sp" tools:ignore="SmallSp" /> - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bookmarks.xml b/app/src/main/res/layout/fragment_bookmarks.xml index 9e4c7ca2..8d1372c0 100644 --- a/app/src/main/res/layout/fragment_bookmarks.xml +++ b/app/src/main/res/layout/fragment_bookmarks.xml @@ -1,5 +1,5 @@ - @@ -22,4 +22,15 @@ android:divider="?android:listDivider" android:dividerPadding="16dp"/> - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forum.xml b/app/src/main/res/layout/fragment_forum.xml index 2f5de239..a428557b 100644 --- a/app/src/main/res/layout/fragment_forum.xml +++ b/app/src/main/res/layout/fragment_forum.xml @@ -11,7 +11,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - + android:layout_height="match_parent" + android:background="@color/background"> - - - + android:layout_height="match_parent"> + + + + + + - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_unread_empty_row.xml b/app/src/main/res/layout/fragment_unread_empty_row.xml deleted file mode 100644 index d5394258..00000000 --- a/app/src/main/res/layout/fragment_unread_empty_row.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_unread_mark_read_row.xml b/app/src/main/res/layout/fragment_unread_mark_read_row.xml deleted file mode 100644 index c825118c..00000000 --- a/app/src/main/res/layout/fragment_unread_mark_read_row.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_unread_row.xml b/app/src/main/res/layout/fragment_unread_row.xml index 7d136a4e..d9da3ace 100644 --- a/app/src/main/res/layout/fragment_unread_row.xml +++ b/app/src/main/res/layout/fragment_unread_row.xml @@ -32,7 +32,7 @@ android:layout_below="@+id/title" android:layout_toEndOf="@+id/dateTime"/> - + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 574423f0..6d89e003 100755 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..65a43813 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index daf77a41..357ca761 100755 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..1f6a7fca Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index c48ce65d..d12ed18b 100755 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..5b82b414 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d3a822ab..1110ade8 100755 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..418dc977 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index ef352f40..ec360cfa 100755 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..12cd98f2 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index a086e88b..df265dbe 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -3,4 +3,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..f2269c54 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #333333 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fabd3e8a..d1c69acb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,6 +23,7 @@ Unread Shoutbox Refresh + No unread topics! thmmy.gr @@ -41,7 +42,7 @@ Subject Started by: %1$s Stats - Last post on: %1$s + Last post on: %1$s\nby %2$s Share @@ -93,6 +94,8 @@ mTHMMY uses the following open-source libraries: Apache v2.0 License libraries The MIT License libraries + Eclipse Public License v1.0 libraries + Other libraries Contact Do not hesitate to contact us for any matter either by email at thmmynolife@gmail.com, or by joining our discord server at https://discord.gg/CVt3yrn. Open Source @@ -102,8 +105,7 @@ Remove - You have no bookmarked boards - You have no bookmarked topics + Nothing bookmarked here! Toggle Notification @@ -168,26 +170,38 @@ Settings App + pref_app_main_default_tab_key Default home tab Sets a home screen tab as default Default home tab + pref_app_display_relative_time_key + Display relative time + Considering that you haven\'t set some weird custom time format Notifications + pref_notification_vibration_enable_key Vibration + pref_notification_led_enable_key Notifications led Enables/disables the notifications led (if the device has one) + pref_notifications_select_sound_key Notifications sound Sets your preferred notification sound Posting + pref_category_posting_key + pref_posting_app_signature_enable_key App signature Appends a \"sent from mTHMMY\" message to your posts Uploading + pref_category_uploading_key + pref_uploading_app_signature_enable_key App signature Appends an \"uploaded from mTHMMY\" message to the descriptions of your uploads Privacy + pref_category_privacy_key pref_privacy_crashlytics_enable_key Crash data reports Automatically send us anonymized reports of errors and crashes @@ -218,4 +232,5 @@ New topic Create topic + Link copied diff --git a/app/src/main/res/xml-v26/app_preferences_guest.xml b/app/src/main/res/xml-v26/app_preferences_guest.xml index 942c2692..1e04ec41 100644 --- a/app/src/main/res/xml-v26/app_preferences_guest.xml +++ b/app/src/main/res/xml-v26/app_preferences_guest.xml @@ -10,14 +10,20 @@ android:dialogTitle="@string/pref_app_main_default_tab_dialog_title" android:entries="@array/pref_app_main_default_tab_entries" android:entryValues="@array/pref_app_main_default_tab_values" - android:key="pref_app_main_default_tab_key" + android:key="@string/pref_app_main_default_tab_key" android:title="@string/pref_title_app_main_default_tab" android:summary="@string/pref_summary_app_main_default_tab" app:iconSpaceReserved="false" /> + + + + + + + + www.thmmy.gr + + diff --git a/app/src/test/java/gr/thmmy/mthmmy/utils/DateTimeUtilsTest.java b/app/src/test/java/gr/thmmy/mthmmy/utils/DateTimeUtilsTest.java new file mode 100644 index 00000000..eb214cb0 --- /dev/null +++ b/app/src/test/java/gr/thmmy/mthmmy/utils/DateTimeUtilsTest.java @@ -0,0 +1,106 @@ +package gr.thmmy.mthmmy.utils; + +import net.lachlanmckee.timberjunit.TimberTestRule; + +import org.joda.time.DateTime; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import static gr.thmmy.mthmmy.utils.DateTimeUtils.getRelativeTimeSpanString; +import static org.junit.Assert.assertArrayEquals; +import static org.mockito.Mockito.when; + +@RunWith(PowerMockRunner.class) +@PrepareForTest(DateTimeUtils.class) +public class DateTimeUtilsTest { + @Rule + public TimberTestRule logAllAlwaysRule = TimberTestRule.logAllAlways(); + + private final long NOW = System.currentTimeMillis(); + private final String [] expectedRelativeTimeSpans = { + "just now", + "just now", + "just now", + "1m", + "1m", + "1m", + "2m", + "3m", + "1h", + "1h 15m", + "2h", + "2h 20m", + "4h", + "20h", + "21h", + "21h", + "21h", + "22h", + "1d", + "1d", + "2d", + "2d", + "3d", + "16d", + "1 month", + "2 months", + "1 year", + "1 year", + "2 years", + "a long time ago" + }; + + private final long [] times = { + NOW, + newDT().minusSeconds(44).getMillis(), + newDT().minusSeconds(44).minusMillis(500).getMillis(), + newDT().minusSeconds(45).getMillis(), + newDT().minusSeconds(89).getMillis(), + newDT().minusSeconds(89).minusMillis(500).getMillis(), + newDT().minusSeconds(90).getMillis(), + newDT().minusMinutes(3).minusSeconds(10).getMillis(), + newDT().minusHours(1).minusMinutes(4).getMillis(), + newDT().minusHours(1).minusMinutes(15).getMillis(), + newDT().minusHours(2).minusMinutes(4).getMillis(), + newDT().minusHours(2).minusMinutes(20).getMillis(), + newDT().minusHours(3).minusMinutes(51).getMillis(), + newDT().minusHours(20).minusMinutes(10).getMillis(), + newDT().minusHours(20).minusMinutes(30).getMillis(), + newDT().minusHours(21).getMillis(), + newDT().minusHours(21).minusMinutes(29).getMillis(), + newDT().minusHours(21).minusMinutes(30).getMillis(), + newDT().minusHours(22).minusMinutes(30).getMillis(), + newDT().minusHours(34).getMillis(), + newDT().minusHours(38).getMillis(), + newDT().minusDays(2).minusHours(10).getMillis(), + newDT().minusDays(2).minusHours(17).getMillis(), + newDT().minusDays(16).getMillis(), + newDT().minusDays(30+12).getMillis(), + newDT().minusDays(2*30+14).getMillis(), + newDT().minusDays(14*30).getMillis(), + newDT().minusMonths(15).getMillis(), + newDT().minusMonths(22).getMillis(), + newDT().minusYears(22).getMillis() + }; + + private DateTime newDT(){ + return new DateTime(NOW); + } + + @Test + public void relativeTimeSpansAreConvertedCorrectly() { + PowerMockito.mockStatic(System.class); + when(System.currentTimeMillis()).thenReturn(NOW); + + String[] timeStrings = new String[times.length]; + + for(int i=0; i diff --git a/app/src/main/res/drawable/emoji_a_eatpaper.xml b/emojis/src/main/res/drawable/emoji_a_eatpaper.xml similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper.xml rename to emojis/src/main/res/drawable/emoji_a_eatpaper.xml diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f0.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f0.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f0.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f1.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f1.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f1.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f10.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f10.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f10.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f11.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f11.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f11.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f12.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f12.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f12.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f13.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f13.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f13.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f14.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f14.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f14.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f15.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f15.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f15.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f16.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f16.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f16.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f17.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f17.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f17.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f18.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f18.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f18.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f19.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f19.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f19.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f2.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f2.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f2.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f20.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f20.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f20.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f21.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f21.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f21.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f22.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f22.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f22.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f23.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f23.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f23.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f24.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f24.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f24.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f25.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f25.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f25.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f26.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f26.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f26.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f27.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f27.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f27.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f28.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f28.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f28.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f29.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f29.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f29.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f3.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f3.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f3.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f30.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f30.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f30.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f31.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f31.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f31.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f32.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f32.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f32.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f33.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f33.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f33.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f34.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f34.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f34.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f35.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f35.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f35.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f36.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f36.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f36.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f37.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f37.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f37.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f38.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f38.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f38.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f39.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f39.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f39.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f4.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f4.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f4.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f40.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f40.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f40.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f41.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f41.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f41.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f42.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f42.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f42.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f43.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f43.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f43.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f44.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f44.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f44.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f45.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f45.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f45.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f46.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f46.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f46.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f47.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f47.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f47.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f48.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f48.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f48.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f49.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f49.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f49.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f5.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f5.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f5.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f50.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f50.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f50.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f50.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f51.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f51.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f51.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f51.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f52.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f52.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f52.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f52.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f53.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f53.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f53.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f53.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f54.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f54.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f54.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f54.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f55.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f55.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f55.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f55.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f56.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f56.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f56.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f56.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f57.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f57.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f57.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f57.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f58.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f58.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f58.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f58.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f59.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f59.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f59.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f59.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f6.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f6.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f6.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f60.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f60.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f60.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f60.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f61.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f61.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f61.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f61.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f62.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f62.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f62.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f62.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f63.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f63.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f63.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f63.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f64.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f64.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f64.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f64.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f65.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f65.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f65.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f65.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f66.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f66.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f66.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f66.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f67.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f67.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f67.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f67.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f68.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f68.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f68.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f68.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f69.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f69.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f69.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f69.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f7.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f7.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f7.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f70.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f70.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f70.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f70.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f71.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f71.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f71.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f71.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f72.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f72.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f72.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f72.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f73.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f73.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f73.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f73.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f74.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f74.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f74.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f74.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f75.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f75.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f75.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f75.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f76.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f76.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f76.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f76.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f77.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f77.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f77.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f77.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f8.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f8.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f8.png diff --git a/app/src/main/res/drawable/emoji_a_eatpaper_f9.png b/emojis/src/main/res/drawable/emoji_a_eatpaper_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_a_eatpaper_f9.png rename to emojis/src/main/res/drawable/emoji_a_eatpaper_f9.png diff --git a/app/src/main/res/drawable/emoji_angry.xml b/emojis/src/main/res/drawable/emoji_angry.xml similarity index 100% rename from app/src/main/res/drawable/emoji_angry.xml rename to emojis/src/main/res/drawable/emoji_angry.xml diff --git a/app/src/main/res/drawable/emoji_angry4.xml b/emojis/src/main/res/drawable/emoji_angry4.xml similarity index 100% rename from app/src/main/res/drawable/emoji_angry4.xml rename to emojis/src/main/res/drawable/emoji_angry4.xml diff --git a/app/src/main/res/drawable/emoji_angry4_f0.png b/emojis/src/main/res/drawable/emoji_angry4_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f0.png rename to emojis/src/main/res/drawable/emoji_angry4_f0.png diff --git a/app/src/main/res/drawable/emoji_angry4_f1.png b/emojis/src/main/res/drawable/emoji_angry4_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f1.png rename to emojis/src/main/res/drawable/emoji_angry4_f1.png diff --git a/app/src/main/res/drawable/emoji_angry4_f2.png b/emojis/src/main/res/drawable/emoji_angry4_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f2.png rename to emojis/src/main/res/drawable/emoji_angry4_f2.png diff --git a/app/src/main/res/drawable/emoji_angry4_f3.png b/emojis/src/main/res/drawable/emoji_angry4_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f3.png rename to emojis/src/main/res/drawable/emoji_angry4_f3.png diff --git a/app/src/main/res/drawable/emoji_angry4_f4.png b/emojis/src/main/res/drawable/emoji_angry4_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f4.png rename to emojis/src/main/res/drawable/emoji_angry4_f4.png diff --git a/app/src/main/res/drawable/emoji_angry4_f5.png b/emojis/src/main/res/drawable/emoji_angry4_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f5.png rename to emojis/src/main/res/drawable/emoji_angry4_f5.png diff --git a/app/src/main/res/drawable/emoji_angry4_f6.png b/emojis/src/main/res/drawable/emoji_angry4_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f6.png rename to emojis/src/main/res/drawable/emoji_angry4_f6.png diff --git a/app/src/main/res/drawable/emoji_angry4_f7.png b/emojis/src/main/res/drawable/emoji_angry4_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry4_f7.png rename to emojis/src/main/res/drawable/emoji_angry4_f7.png diff --git a/app/src/main/res/drawable/emoji_angry_f0.png b/emojis/src/main/res/drawable/emoji_angry_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_f0.png rename to emojis/src/main/res/drawable/emoji_angry_f0.png diff --git a/app/src/main/res/drawable/emoji_angry_f1.png b/emojis/src/main/res/drawable/emoji_angry_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_f1.png rename to emojis/src/main/res/drawable/emoji_angry_f1.png diff --git a/app/src/main/res/drawable/emoji_angry_f2.png b/emojis/src/main/res/drawable/emoji_angry_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_f2.png rename to emojis/src/main/res/drawable/emoji_angry_f2.png diff --git a/app/src/main/res/drawable/emoji_angry_f3.png b/emojis/src/main/res/drawable/emoji_angry_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_f3.png rename to emojis/src/main/res/drawable/emoji_angry_f3.png diff --git a/app/src/main/res/drawable/emoji_angry_hot.xml b/emojis/src/main/res/drawable/emoji_angry_hot.xml similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot.xml rename to emojis/src/main/res/drawable/emoji_angry_hot.xml diff --git a/app/src/main/res/drawable/emoji_angry_hot_f0.png b/emojis/src/main/res/drawable/emoji_angry_hot_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f0.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f0.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f1.png b/emojis/src/main/res/drawable/emoji_angry_hot_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f1.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f1.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f2.png b/emojis/src/main/res/drawable/emoji_angry_hot_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f2.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f2.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f3.png b/emojis/src/main/res/drawable/emoji_angry_hot_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f3.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f3.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f4.png b/emojis/src/main/res/drawable/emoji_angry_hot_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f4.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f4.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f5.png b/emojis/src/main/res/drawable/emoji_angry_hot_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f5.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f5.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f6.png b/emojis/src/main/res/drawable/emoji_angry_hot_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f6.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f6.png diff --git a/app/src/main/res/drawable/emoji_angry_hot_f7.png b/emojis/src/main/res/drawable/emoji_angry_hot_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_angry_hot_f7.png rename to emojis/src/main/res/drawable/emoji_angry_hot_f7.png diff --git a/app/src/main/res/drawable/emoji_argue.xml b/emojis/src/main/res/drawable/emoji_argue.xml similarity index 100% rename from app/src/main/res/drawable/emoji_argue.xml rename to emojis/src/main/res/drawable/emoji_argue.xml diff --git a/app/src/main/res/drawable/emoji_argue_f0.png b/emojis/src/main/res/drawable/emoji_argue_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f0.png rename to emojis/src/main/res/drawable/emoji_argue_f0.png diff --git a/app/src/main/res/drawable/emoji_argue_f1.png b/emojis/src/main/res/drawable/emoji_argue_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f1.png rename to emojis/src/main/res/drawable/emoji_argue_f1.png diff --git a/app/src/main/res/drawable/emoji_argue_f10.png b/emojis/src/main/res/drawable/emoji_argue_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f10.png rename to emojis/src/main/res/drawable/emoji_argue_f10.png diff --git a/app/src/main/res/drawable/emoji_argue_f11.png b/emojis/src/main/res/drawable/emoji_argue_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f11.png rename to emojis/src/main/res/drawable/emoji_argue_f11.png diff --git a/app/src/main/res/drawable/emoji_argue_f12.png b/emojis/src/main/res/drawable/emoji_argue_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f12.png rename to emojis/src/main/res/drawable/emoji_argue_f12.png diff --git a/app/src/main/res/drawable/emoji_argue_f13.png b/emojis/src/main/res/drawable/emoji_argue_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f13.png rename to emojis/src/main/res/drawable/emoji_argue_f13.png diff --git a/app/src/main/res/drawable/emoji_argue_f14.png b/emojis/src/main/res/drawable/emoji_argue_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f14.png rename to emojis/src/main/res/drawable/emoji_argue_f14.png diff --git a/app/src/main/res/drawable/emoji_argue_f15.png b/emojis/src/main/res/drawable/emoji_argue_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f15.png rename to emojis/src/main/res/drawable/emoji_argue_f15.png diff --git a/app/src/main/res/drawable/emoji_argue_f16.png b/emojis/src/main/res/drawable/emoji_argue_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f16.png rename to emojis/src/main/res/drawable/emoji_argue_f16.png diff --git a/app/src/main/res/drawable/emoji_argue_f2.png b/emojis/src/main/res/drawable/emoji_argue_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f2.png rename to emojis/src/main/res/drawable/emoji_argue_f2.png diff --git a/app/src/main/res/drawable/emoji_argue_f3.png b/emojis/src/main/res/drawable/emoji_argue_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f3.png rename to emojis/src/main/res/drawable/emoji_argue_f3.png diff --git a/app/src/main/res/drawable/emoji_argue_f4.png b/emojis/src/main/res/drawable/emoji_argue_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f4.png rename to emojis/src/main/res/drawable/emoji_argue_f4.png diff --git a/app/src/main/res/drawable/emoji_argue_f5.png b/emojis/src/main/res/drawable/emoji_argue_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f5.png rename to emojis/src/main/res/drawable/emoji_argue_f5.png diff --git a/app/src/main/res/drawable/emoji_argue_f6.png b/emojis/src/main/res/drawable/emoji_argue_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f6.png rename to emojis/src/main/res/drawable/emoji_argue_f6.png diff --git a/app/src/main/res/drawable/emoji_argue_f7.png b/emojis/src/main/res/drawable/emoji_argue_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f7.png rename to emojis/src/main/res/drawable/emoji_argue_f7.png diff --git a/app/src/main/res/drawable/emoji_argue_f8.png b/emojis/src/main/res/drawable/emoji_argue_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f8.png rename to emojis/src/main/res/drawable/emoji_argue_f8.png diff --git a/app/src/main/res/drawable/emoji_argue_f9.png b/emojis/src/main/res/drawable/emoji_argue_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_argue_f9.png rename to emojis/src/main/res/drawable/emoji_argue_f9.png diff --git a/app/src/main/res/drawable/emoji_band.xml b/emojis/src/main/res/drawable/emoji_band.xml similarity index 100% rename from app/src/main/res/drawable/emoji_band.xml rename to emojis/src/main/res/drawable/emoji_band.xml diff --git a/app/src/main/res/drawable/emoji_band_f0.png b/emojis/src/main/res/drawable/emoji_band_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f0.png rename to emojis/src/main/res/drawable/emoji_band_f0.png diff --git a/app/src/main/res/drawable/emoji_band_f1.png b/emojis/src/main/res/drawable/emoji_band_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f1.png rename to emojis/src/main/res/drawable/emoji_band_f1.png diff --git a/app/src/main/res/drawable/emoji_band_f2.png b/emojis/src/main/res/drawable/emoji_band_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f2.png rename to emojis/src/main/res/drawable/emoji_band_f2.png diff --git a/app/src/main/res/drawable/emoji_band_f3.png b/emojis/src/main/res/drawable/emoji_band_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f3.png rename to emojis/src/main/res/drawable/emoji_band_f3.png diff --git a/app/src/main/res/drawable/emoji_band_f4.png b/emojis/src/main/res/drawable/emoji_band_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f4.png rename to emojis/src/main/res/drawable/emoji_band_f4.png diff --git a/app/src/main/res/drawable/emoji_band_f5.png b/emojis/src/main/res/drawable/emoji_band_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f5.png rename to emojis/src/main/res/drawable/emoji_band_f5.png diff --git a/app/src/main/res/drawable/emoji_band_f6.png b/emojis/src/main/res/drawable/emoji_band_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f6.png rename to emojis/src/main/res/drawable/emoji_band_f6.png diff --git a/app/src/main/res/drawable/emoji_band_f7.png b/emojis/src/main/res/drawable/emoji_band_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_band_f7.png rename to emojis/src/main/res/drawable/emoji_band_f7.png diff --git a/app/src/main/res/drawable/emoji_bang_head.xml b/emojis/src/main/res/drawable/emoji_bang_head.xml similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head.xml rename to emojis/src/main/res/drawable/emoji_bang_head.xml diff --git a/app/src/main/res/drawable/emoji_bang_head_f0.png b/emojis/src/main/res/drawable/emoji_bang_head_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head_f0.png rename to emojis/src/main/res/drawable/emoji_bang_head_f0.png diff --git a/app/src/main/res/drawable/emoji_bang_head_f1.png b/emojis/src/main/res/drawable/emoji_bang_head_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head_f1.png rename to emojis/src/main/res/drawable/emoji_bang_head_f1.png diff --git a/app/src/main/res/drawable/emoji_bang_head_f2.png b/emojis/src/main/res/drawable/emoji_bang_head_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head_f2.png rename to emojis/src/main/res/drawable/emoji_bang_head_f2.png diff --git a/app/src/main/res/drawable/emoji_bang_head_f3.png b/emojis/src/main/res/drawable/emoji_bang_head_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head_f3.png rename to emojis/src/main/res/drawable/emoji_bang_head_f3.png diff --git a/app/src/main/res/drawable/emoji_bang_head_f4.png b/emojis/src/main/res/drawable/emoji_bang_head_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_bang_head_f4.png rename to emojis/src/main/res/drawable/emoji_bang_head_f4.png diff --git a/app/src/main/res/drawable/emoji_banned.xml b/emojis/src/main/res/drawable/emoji_banned.xml similarity index 100% rename from app/src/main/res/drawable/emoji_banned.xml rename to emojis/src/main/res/drawable/emoji_banned.xml diff --git a/app/src/main/res/drawable/emoji_banned2.xml b/emojis/src/main/res/drawable/emoji_banned2.xml similarity index 100% rename from app/src/main/res/drawable/emoji_banned2.xml rename to emojis/src/main/res/drawable/emoji_banned2.xml diff --git a/app/src/main/res/drawable/emoji_banned2_f0.png b/emojis/src/main/res/drawable/emoji_banned2_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned2_f0.png rename to emojis/src/main/res/drawable/emoji_banned2_f0.png diff --git a/app/src/main/res/drawable/emoji_banned_f0.png b/emojis/src/main/res/drawable/emoji_banned_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f0.png rename to emojis/src/main/res/drawable/emoji_banned_f0.png diff --git a/app/src/main/res/drawable/emoji_banned_f1.png b/emojis/src/main/res/drawable/emoji_banned_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f1.png rename to emojis/src/main/res/drawable/emoji_banned_f1.png diff --git a/app/src/main/res/drawable/emoji_banned_f10.png b/emojis/src/main/res/drawable/emoji_banned_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f10.png rename to emojis/src/main/res/drawable/emoji_banned_f10.png diff --git a/app/src/main/res/drawable/emoji_banned_f11.png b/emojis/src/main/res/drawable/emoji_banned_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f11.png rename to emojis/src/main/res/drawable/emoji_banned_f11.png diff --git a/app/src/main/res/drawable/emoji_banned_f12.png b/emojis/src/main/res/drawable/emoji_banned_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f12.png rename to emojis/src/main/res/drawable/emoji_banned_f12.png diff --git a/app/src/main/res/drawable/emoji_banned_f13.png b/emojis/src/main/res/drawable/emoji_banned_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f13.png rename to emojis/src/main/res/drawable/emoji_banned_f13.png diff --git a/app/src/main/res/drawable/emoji_banned_f14.png b/emojis/src/main/res/drawable/emoji_banned_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f14.png rename to emojis/src/main/res/drawable/emoji_banned_f14.png diff --git a/app/src/main/res/drawable/emoji_banned_f15.png b/emojis/src/main/res/drawable/emoji_banned_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f15.png rename to emojis/src/main/res/drawable/emoji_banned_f15.png diff --git a/app/src/main/res/drawable/emoji_banned_f16.png b/emojis/src/main/res/drawable/emoji_banned_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f16.png rename to emojis/src/main/res/drawable/emoji_banned_f16.png diff --git a/app/src/main/res/drawable/emoji_banned_f17.png b/emojis/src/main/res/drawable/emoji_banned_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f17.png rename to emojis/src/main/res/drawable/emoji_banned_f17.png diff --git a/app/src/main/res/drawable/emoji_banned_f18.png b/emojis/src/main/res/drawable/emoji_banned_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f18.png rename to emojis/src/main/res/drawable/emoji_banned_f18.png diff --git a/app/src/main/res/drawable/emoji_banned_f19.png b/emojis/src/main/res/drawable/emoji_banned_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f19.png rename to emojis/src/main/res/drawable/emoji_banned_f19.png diff --git a/app/src/main/res/drawable/emoji_banned_f2.png b/emojis/src/main/res/drawable/emoji_banned_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f2.png rename to emojis/src/main/res/drawable/emoji_banned_f2.png diff --git a/app/src/main/res/drawable/emoji_banned_f20.png b/emojis/src/main/res/drawable/emoji_banned_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f20.png rename to emojis/src/main/res/drawable/emoji_banned_f20.png diff --git a/app/src/main/res/drawable/emoji_banned_f21.png b/emojis/src/main/res/drawable/emoji_banned_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f21.png rename to emojis/src/main/res/drawable/emoji_banned_f21.png diff --git a/app/src/main/res/drawable/emoji_banned_f22.png b/emojis/src/main/res/drawable/emoji_banned_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f22.png rename to emojis/src/main/res/drawable/emoji_banned_f22.png diff --git a/app/src/main/res/drawable/emoji_banned_f23.png b/emojis/src/main/res/drawable/emoji_banned_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f23.png rename to emojis/src/main/res/drawable/emoji_banned_f23.png diff --git a/app/src/main/res/drawable/emoji_banned_f24.png b/emojis/src/main/res/drawable/emoji_banned_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f24.png rename to emojis/src/main/res/drawable/emoji_banned_f24.png diff --git a/app/src/main/res/drawable/emoji_banned_f25.png b/emojis/src/main/res/drawable/emoji_banned_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f25.png rename to emojis/src/main/res/drawable/emoji_banned_f25.png diff --git a/app/src/main/res/drawable/emoji_banned_f26.png b/emojis/src/main/res/drawable/emoji_banned_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f26.png rename to emojis/src/main/res/drawable/emoji_banned_f26.png diff --git a/app/src/main/res/drawable/emoji_banned_f27.png b/emojis/src/main/res/drawable/emoji_banned_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f27.png rename to emojis/src/main/res/drawable/emoji_banned_f27.png diff --git a/app/src/main/res/drawable/emoji_banned_f28.png b/emojis/src/main/res/drawable/emoji_banned_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f28.png rename to emojis/src/main/res/drawable/emoji_banned_f28.png diff --git a/app/src/main/res/drawable/emoji_banned_f29.png b/emojis/src/main/res/drawable/emoji_banned_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f29.png rename to emojis/src/main/res/drawable/emoji_banned_f29.png diff --git a/app/src/main/res/drawable/emoji_banned_f3.png b/emojis/src/main/res/drawable/emoji_banned_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f3.png rename to emojis/src/main/res/drawable/emoji_banned_f3.png diff --git a/app/src/main/res/drawable/emoji_banned_f4.png b/emojis/src/main/res/drawable/emoji_banned_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f4.png rename to emojis/src/main/res/drawable/emoji_banned_f4.png diff --git a/app/src/main/res/drawable/emoji_banned_f5.png b/emojis/src/main/res/drawable/emoji_banned_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f5.png rename to emojis/src/main/res/drawable/emoji_banned_f5.png diff --git a/app/src/main/res/drawable/emoji_banned_f6.png b/emojis/src/main/res/drawable/emoji_banned_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f6.png rename to emojis/src/main/res/drawable/emoji_banned_f6.png diff --git a/app/src/main/res/drawable/emoji_banned_f7.png b/emojis/src/main/res/drawable/emoji_banned_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f7.png rename to emojis/src/main/res/drawable/emoji_banned_f7.png diff --git a/app/src/main/res/drawable/emoji_banned_f8.png b/emojis/src/main/res/drawable/emoji_banned_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f8.png rename to emojis/src/main/res/drawable/emoji_banned_f8.png diff --git a/app/src/main/res/drawable/emoji_banned_f9.png b/emojis/src/main/res/drawable/emoji_banned_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_banned_f9.png rename to emojis/src/main/res/drawable/emoji_banned_f9.png diff --git a/app/src/main/res/drawable/emoji_bath.xml b/emojis/src/main/res/drawable/emoji_bath.xml similarity index 100% rename from app/src/main/res/drawable/emoji_bath.xml rename to emojis/src/main/res/drawable/emoji_bath.xml diff --git a/app/src/main/res/drawable/emoji_bath_f0.png b/emojis/src/main/res/drawable/emoji_bath_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f0.png rename to emojis/src/main/res/drawable/emoji_bath_f0.png diff --git a/app/src/main/res/drawable/emoji_bath_f1.png b/emojis/src/main/res/drawable/emoji_bath_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f1.png rename to emojis/src/main/res/drawable/emoji_bath_f1.png diff --git a/app/src/main/res/drawable/emoji_bath_f10.png b/emojis/src/main/res/drawable/emoji_bath_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f10.png rename to emojis/src/main/res/drawable/emoji_bath_f10.png diff --git a/app/src/main/res/drawable/emoji_bath_f11.png b/emojis/src/main/res/drawable/emoji_bath_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f11.png rename to emojis/src/main/res/drawable/emoji_bath_f11.png diff --git a/app/src/main/res/drawable/emoji_bath_f12.png b/emojis/src/main/res/drawable/emoji_bath_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f12.png rename to emojis/src/main/res/drawable/emoji_bath_f12.png diff --git a/app/src/main/res/drawable/emoji_bath_f13.png b/emojis/src/main/res/drawable/emoji_bath_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f13.png rename to emojis/src/main/res/drawable/emoji_bath_f13.png diff --git a/app/src/main/res/drawable/emoji_bath_f14.png b/emojis/src/main/res/drawable/emoji_bath_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f14.png rename to emojis/src/main/res/drawable/emoji_bath_f14.png diff --git a/app/src/main/res/drawable/emoji_bath_f15.png b/emojis/src/main/res/drawable/emoji_bath_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f15.png rename to emojis/src/main/res/drawable/emoji_bath_f15.png diff --git a/app/src/main/res/drawable/emoji_bath_f16.png b/emojis/src/main/res/drawable/emoji_bath_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f16.png rename to emojis/src/main/res/drawable/emoji_bath_f16.png diff --git a/app/src/main/res/drawable/emoji_bath_f17.png b/emojis/src/main/res/drawable/emoji_bath_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f17.png rename to emojis/src/main/res/drawable/emoji_bath_f17.png diff --git a/app/src/main/res/drawable/emoji_bath_f18.png b/emojis/src/main/res/drawable/emoji_bath_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f18.png rename to emojis/src/main/res/drawable/emoji_bath_f18.png diff --git a/app/src/main/res/drawable/emoji_bath_f19.png b/emojis/src/main/res/drawable/emoji_bath_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f19.png rename to emojis/src/main/res/drawable/emoji_bath_f19.png diff --git a/app/src/main/res/drawable/emoji_bath_f2.png b/emojis/src/main/res/drawable/emoji_bath_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f2.png rename to emojis/src/main/res/drawable/emoji_bath_f2.png diff --git a/app/src/main/res/drawable/emoji_bath_f20.png b/emojis/src/main/res/drawable/emoji_bath_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f20.png rename to emojis/src/main/res/drawable/emoji_bath_f20.png diff --git a/app/src/main/res/drawable/emoji_bath_f21.png b/emojis/src/main/res/drawable/emoji_bath_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f21.png rename to emojis/src/main/res/drawable/emoji_bath_f21.png diff --git a/app/src/main/res/drawable/emoji_bath_f22.png b/emojis/src/main/res/drawable/emoji_bath_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f22.png rename to emojis/src/main/res/drawable/emoji_bath_f22.png diff --git a/app/src/main/res/drawable/emoji_bath_f23.png b/emojis/src/main/res/drawable/emoji_bath_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f23.png rename to emojis/src/main/res/drawable/emoji_bath_f23.png diff --git a/app/src/main/res/drawable/emoji_bath_f24.png b/emojis/src/main/res/drawable/emoji_bath_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f24.png rename to emojis/src/main/res/drawable/emoji_bath_f24.png diff --git a/app/src/main/res/drawable/emoji_bath_f25.png b/emojis/src/main/res/drawable/emoji_bath_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f25.png rename to emojis/src/main/res/drawable/emoji_bath_f25.png diff --git a/app/src/main/res/drawable/emoji_bath_f26.png b/emojis/src/main/res/drawable/emoji_bath_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f26.png rename to emojis/src/main/res/drawable/emoji_bath_f26.png diff --git a/app/src/main/res/drawable/emoji_bath_f27.png b/emojis/src/main/res/drawable/emoji_bath_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f27.png rename to emojis/src/main/res/drawable/emoji_bath_f27.png diff --git a/app/src/main/res/drawable/emoji_bath_f28.png b/emojis/src/main/res/drawable/emoji_bath_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f28.png rename to emojis/src/main/res/drawable/emoji_bath_f28.png diff --git a/app/src/main/res/drawable/emoji_bath_f29.png b/emojis/src/main/res/drawable/emoji_bath_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f29.png rename to emojis/src/main/res/drawable/emoji_bath_f29.png diff --git a/app/src/main/res/drawable/emoji_bath_f3.png b/emojis/src/main/res/drawable/emoji_bath_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f3.png rename to emojis/src/main/res/drawable/emoji_bath_f3.png diff --git a/app/src/main/res/drawable/emoji_bath_f30.png b/emojis/src/main/res/drawable/emoji_bath_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f30.png rename to emojis/src/main/res/drawable/emoji_bath_f30.png diff --git a/app/src/main/res/drawable/emoji_bath_f31.png b/emojis/src/main/res/drawable/emoji_bath_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f31.png rename to emojis/src/main/res/drawable/emoji_bath_f31.png diff --git a/app/src/main/res/drawable/emoji_bath_f32.png b/emojis/src/main/res/drawable/emoji_bath_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f32.png rename to emojis/src/main/res/drawable/emoji_bath_f32.png diff --git a/app/src/main/res/drawable/emoji_bath_f33.png b/emojis/src/main/res/drawable/emoji_bath_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f33.png rename to emojis/src/main/res/drawable/emoji_bath_f33.png diff --git a/app/src/main/res/drawable/emoji_bath_f34.png b/emojis/src/main/res/drawable/emoji_bath_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f34.png rename to emojis/src/main/res/drawable/emoji_bath_f34.png diff --git a/app/src/main/res/drawable/emoji_bath_f35.png b/emojis/src/main/res/drawable/emoji_bath_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f35.png rename to emojis/src/main/res/drawable/emoji_bath_f35.png diff --git a/app/src/main/res/drawable/emoji_bath_f36.png b/emojis/src/main/res/drawable/emoji_bath_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f36.png rename to emojis/src/main/res/drawable/emoji_bath_f36.png diff --git a/app/src/main/res/drawable/emoji_bath_f37.png b/emojis/src/main/res/drawable/emoji_bath_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f37.png rename to emojis/src/main/res/drawable/emoji_bath_f37.png diff --git a/app/src/main/res/drawable/emoji_bath_f38.png b/emojis/src/main/res/drawable/emoji_bath_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f38.png rename to emojis/src/main/res/drawable/emoji_bath_f38.png diff --git a/app/src/main/res/drawable/emoji_bath_f39.png b/emojis/src/main/res/drawable/emoji_bath_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f39.png rename to emojis/src/main/res/drawable/emoji_bath_f39.png diff --git a/app/src/main/res/drawable/emoji_bath_f4.png b/emojis/src/main/res/drawable/emoji_bath_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f4.png rename to emojis/src/main/res/drawable/emoji_bath_f4.png diff --git a/app/src/main/res/drawable/emoji_bath_f5.png b/emojis/src/main/res/drawable/emoji_bath_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f5.png rename to emojis/src/main/res/drawable/emoji_bath_f5.png diff --git a/app/src/main/res/drawable/emoji_bath_f6.png b/emojis/src/main/res/drawable/emoji_bath_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f6.png rename to emojis/src/main/res/drawable/emoji_bath_f6.png diff --git a/app/src/main/res/drawable/emoji_bath_f7.png b/emojis/src/main/res/drawable/emoji_bath_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f7.png rename to emojis/src/main/res/drawable/emoji_bath_f7.png diff --git a/app/src/main/res/drawable/emoji_bath_f8.png b/emojis/src/main/res/drawable/emoji_bath_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f8.png rename to emojis/src/main/res/drawable/emoji_bath_f8.png diff --git a/app/src/main/res/drawable/emoji_bath_f9.png b/emojis/src/main/res/drawable/emoji_bath_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_bath_f9.png rename to emojis/src/main/res/drawable/emoji_bath_f9.png diff --git a/app/src/main/res/drawable/emoji_beer2.xml b/emojis/src/main/res/drawable/emoji_beer2.xml similarity index 100% rename from app/src/main/res/drawable/emoji_beer2.xml rename to emojis/src/main/res/drawable/emoji_beer2.xml diff --git a/app/src/main/res/drawable/emoji_beer2_f0.png b/emojis/src/main/res/drawable/emoji_beer2_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f0.png rename to emojis/src/main/res/drawable/emoji_beer2_f0.png diff --git a/app/src/main/res/drawable/emoji_beer2_f1.png b/emojis/src/main/res/drawable/emoji_beer2_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f1.png rename to emojis/src/main/res/drawable/emoji_beer2_f1.png diff --git a/app/src/main/res/drawable/emoji_beer2_f2.png b/emojis/src/main/res/drawable/emoji_beer2_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f2.png rename to emojis/src/main/res/drawable/emoji_beer2_f2.png diff --git a/app/src/main/res/drawable/emoji_beer2_f3.png b/emojis/src/main/res/drawable/emoji_beer2_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f3.png rename to emojis/src/main/res/drawable/emoji_beer2_f3.png diff --git a/app/src/main/res/drawable/emoji_beer2_f4.png b/emojis/src/main/res/drawable/emoji_beer2_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f4.png rename to emojis/src/main/res/drawable/emoji_beer2_f4.png diff --git a/app/src/main/res/drawable/emoji_beer2_f5.png b/emojis/src/main/res/drawable/emoji_beer2_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f5.png rename to emojis/src/main/res/drawable/emoji_beer2_f5.png diff --git a/app/src/main/res/drawable/emoji_beer2_f6.png b/emojis/src/main/res/drawable/emoji_beer2_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_beer2_f6.png rename to emojis/src/main/res/drawable/emoji_beer2_f6.png diff --git a/app/src/main/res/drawable/emoji_beg.xml b/emojis/src/main/res/drawable/emoji_beg.xml similarity index 100% rename from app/src/main/res/drawable/emoji_beg.xml rename to emojis/src/main/res/drawable/emoji_beg.xml diff --git a/app/src/main/res/drawable/emoji_beg_f0.png b/emojis/src/main/res/drawable/emoji_beg_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f0.png rename to emojis/src/main/res/drawable/emoji_beg_f0.png diff --git a/app/src/main/res/drawable/emoji_beg_f1.png b/emojis/src/main/res/drawable/emoji_beg_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f1.png rename to emojis/src/main/res/drawable/emoji_beg_f1.png diff --git a/app/src/main/res/drawable/emoji_beg_f2.png b/emojis/src/main/res/drawable/emoji_beg_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f2.png rename to emojis/src/main/res/drawable/emoji_beg_f2.png diff --git a/app/src/main/res/drawable/emoji_beg_f3.png b/emojis/src/main/res/drawable/emoji_beg_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f3.png rename to emojis/src/main/res/drawable/emoji_beg_f3.png diff --git a/app/src/main/res/drawable/emoji_beg_f4.png b/emojis/src/main/res/drawable/emoji_beg_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f4.png rename to emojis/src/main/res/drawable/emoji_beg_f4.png diff --git a/app/src/main/res/drawable/emoji_beg_f5.png b/emojis/src/main/res/drawable/emoji_beg_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f5.png rename to emojis/src/main/res/drawable/emoji_beg_f5.png diff --git a/app/src/main/res/drawable/emoji_beg_f6.png b/emojis/src/main/res/drawable/emoji_beg_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_beg_f6.png rename to emojis/src/main/res/drawable/emoji_beg_f6.png diff --git a/app/src/main/res/drawable/emoji_binkybaby.xml b/emojis/src/main/res/drawable/emoji_binkybaby.xml similarity index 100% rename from app/src/main/res/drawable/emoji_binkybaby.xml rename to emojis/src/main/res/drawable/emoji_binkybaby.xml diff --git a/app/src/main/res/drawable/emoji_binkybaby_f0.png b/emojis/src/main/res/drawable/emoji_binkybaby_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_binkybaby_f0.png rename to emojis/src/main/res/drawable/emoji_binkybaby_f0.png diff --git a/app/src/main/res/drawable/emoji_binkybaby_f1.png b/emojis/src/main/res/drawable/emoji_binkybaby_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_binkybaby_f1.png rename to emojis/src/main/res/drawable/emoji_binkybaby_f1.png diff --git a/app/src/main/res/drawable/emoji_bluescreen.xml b/emojis/src/main/res/drawable/emoji_bluescreen.xml similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen.xml rename to emojis/src/main/res/drawable/emoji_bluescreen.xml diff --git a/app/src/main/res/drawable/emoji_bluescreen_f0.png b/emojis/src/main/res/drawable/emoji_bluescreen_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f0.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f0.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f1.png b/emojis/src/main/res/drawable/emoji_bluescreen_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f1.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f1.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f2.png b/emojis/src/main/res/drawable/emoji_bluescreen_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f2.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f2.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f3.png b/emojis/src/main/res/drawable/emoji_bluescreen_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f3.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f3.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f4.png b/emojis/src/main/res/drawable/emoji_bluescreen_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f4.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f4.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f5.png b/emojis/src/main/res/drawable/emoji_bluescreen_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f5.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f5.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f6.png b/emojis/src/main/res/drawable/emoji_bluescreen_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f6.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f6.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f7.png b/emojis/src/main/res/drawable/emoji_bluescreen_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f7.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f7.png diff --git a/app/src/main/res/drawable/emoji_bluescreen_f8.png b/emojis/src/main/res/drawable/emoji_bluescreen_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_bluescreen_f8.png rename to emojis/src/main/res/drawable/emoji_bluescreen_f8.png diff --git a/app/src/main/res/drawable/emoji_boil.xml b/emojis/src/main/res/drawable/emoji_boil.xml similarity index 100% rename from app/src/main/res/drawable/emoji_boil.xml rename to emojis/src/main/res/drawable/emoji_boil.xml diff --git a/app/src/main/res/drawable/emoji_boil_f0.png b/emojis/src/main/res/drawable/emoji_boil_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_boil_f0.png rename to emojis/src/main/res/drawable/emoji_boil_f0.png diff --git a/app/src/main/res/drawable/emoji_boil_f1.png b/emojis/src/main/res/drawable/emoji_boil_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_boil_f1.png rename to emojis/src/main/res/drawable/emoji_boil_f1.png diff --git a/app/src/main/res/drawable/emoji_boil_f2.png b/emojis/src/main/res/drawable/emoji_boil_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_boil_f2.png rename to emojis/src/main/res/drawable/emoji_boil_f2.png diff --git a/app/src/main/res/drawable/emoji_boil_f3.png b/emojis/src/main/res/drawable/emoji_boil_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_boil_f3.png rename to emojis/src/main/res/drawable/emoji_boil_f3.png diff --git a/app/src/main/res/drawable/emoji_boil_f4.png b/emojis/src/main/res/drawable/emoji_boil_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_boil_f4.png rename to emojis/src/main/res/drawable/emoji_boil_f4.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213.xml b/emojis/src/main/res/drawable/emoji_bonjour_97213.xml similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213.xml rename to emojis/src/main/res/drawable/emoji_bonjour_97213.xml diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f0.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f0.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f0.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f1.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f1.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f1.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f10.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f10.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f10.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f11.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f11.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f11.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f2.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f2.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f2.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f3.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f3.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f3.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f4.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f4.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f4.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f5.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f5.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f5.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f6.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f6.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f6.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f7.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f7.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f7.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f8.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f8.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f8.png diff --git a/app/src/main/res/drawable/emoji_bonjour_97213_f9.png b/emojis/src/main/res/drawable/emoji_bonjour_97213_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_bonjour_97213_f9.png rename to emojis/src/main/res/drawable/emoji_bonjour_97213_f9.png diff --git a/app/src/main/res/drawable/emoji_bye.xml b/emojis/src/main/res/drawable/emoji_bye.xml similarity index 100% rename from app/src/main/res/drawable/emoji_bye.xml rename to emojis/src/main/res/drawable/emoji_bye.xml diff --git a/app/src/main/res/drawable/emoji_bye_f0.png b/emojis/src/main/res/drawable/emoji_bye_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_bye_f0.png rename to emojis/src/main/res/drawable/emoji_bye_f0.png diff --git a/app/src/main/res/drawable/emoji_bye_f1.png b/emojis/src/main/res/drawable/emoji_bye_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_bye_f1.png rename to emojis/src/main/res/drawable/emoji_bye_f1.png diff --git a/app/src/main/res/drawable/emoji_bye_f2.png b/emojis/src/main/res/drawable/emoji_bye_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_bye_f2.png rename to emojis/src/main/res/drawable/emoji_bye_f2.png diff --git a/app/src/main/res/drawable/emoji_bye_f3.png b/emojis/src/main/res/drawable/emoji_bye_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_bye_f3.png rename to emojis/src/main/res/drawable/emoji_bye_f3.png diff --git a/app/src/main/res/drawable/emoji_caffine.xml b/emojis/src/main/res/drawable/emoji_caffine.xml similarity index 100% rename from app/src/main/res/drawable/emoji_caffine.xml rename to emojis/src/main/res/drawable/emoji_caffine.xml diff --git a/app/src/main/res/drawable/emoji_caffine_f0.png b/emojis/src/main/res/drawable/emoji_caffine_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f0.png rename to emojis/src/main/res/drawable/emoji_caffine_f0.png diff --git a/app/src/main/res/drawable/emoji_caffine_f1.png b/emojis/src/main/res/drawable/emoji_caffine_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f1.png rename to emojis/src/main/res/drawable/emoji_caffine_f1.png diff --git a/app/src/main/res/drawable/emoji_caffine_f2.png b/emojis/src/main/res/drawable/emoji_caffine_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f2.png rename to emojis/src/main/res/drawable/emoji_caffine_f2.png diff --git a/app/src/main/res/drawable/emoji_caffine_f3.png b/emojis/src/main/res/drawable/emoji_caffine_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f3.png rename to emojis/src/main/res/drawable/emoji_caffine_f3.png diff --git a/app/src/main/res/drawable/emoji_caffine_f4.png b/emojis/src/main/res/drawable/emoji_caffine_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f4.png rename to emojis/src/main/res/drawable/emoji_caffine_f4.png diff --git a/app/src/main/res/drawable/emoji_caffine_f5.png b/emojis/src/main/res/drawable/emoji_caffine_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f5.png rename to emojis/src/main/res/drawable/emoji_caffine_f5.png diff --git a/app/src/main/res/drawable/emoji_caffine_f6.png b/emojis/src/main/res/drawable/emoji_caffine_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_caffine_f6.png rename to emojis/src/main/res/drawable/emoji_caffine_f6.png diff --git a/app/src/main/res/drawable/emoji_callmerip.xml b/emojis/src/main/res/drawable/emoji_callmerip.xml similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip.xml rename to emojis/src/main/res/drawable/emoji_callmerip.xml diff --git a/app/src/main/res/drawable/emoji_callmerip_f0.png b/emojis/src/main/res/drawable/emoji_callmerip_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip_f0.png rename to emojis/src/main/res/drawable/emoji_callmerip_f0.png diff --git a/app/src/main/res/drawable/emoji_callmerip_f1.png b/emojis/src/main/res/drawable/emoji_callmerip_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip_f1.png rename to emojis/src/main/res/drawable/emoji_callmerip_f1.png diff --git a/app/src/main/res/drawable/emoji_callmerip_f2.png b/emojis/src/main/res/drawable/emoji_callmerip_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip_f2.png rename to emojis/src/main/res/drawable/emoji_callmerip_f2.png diff --git a/app/src/main/res/drawable/emoji_callmerip_f3.png b/emojis/src/main/res/drawable/emoji_callmerip_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip_f3.png rename to emojis/src/main/res/drawable/emoji_callmerip_f3.png diff --git a/app/src/main/res/drawable/emoji_callmerip_f4.png b/emojis/src/main/res/drawable/emoji_callmerip_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_callmerip_f4.png rename to emojis/src/main/res/drawable/emoji_callmerip_f4.png diff --git a/app/src/main/res/drawable/emoji_carnaval.xml b/emojis/src/main/res/drawable/emoji_carnaval.xml similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval.xml rename to emojis/src/main/res/drawable/emoji_carnaval.xml diff --git a/app/src/main/res/drawable/emoji_carnaval_f0.png b/emojis/src/main/res/drawable/emoji_carnaval_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval_f0.png rename to emojis/src/main/res/drawable/emoji_carnaval_f0.png diff --git a/app/src/main/res/drawable/emoji_carnaval_f1.png b/emojis/src/main/res/drawable/emoji_carnaval_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval_f1.png rename to emojis/src/main/res/drawable/emoji_carnaval_f1.png diff --git a/app/src/main/res/drawable/emoji_carnaval_f2.png b/emojis/src/main/res/drawable/emoji_carnaval_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval_f2.png rename to emojis/src/main/res/drawable/emoji_carnaval_f2.png diff --git a/app/src/main/res/drawable/emoji_carnaval_f3.png b/emojis/src/main/res/drawable/emoji_carnaval_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval_f3.png rename to emojis/src/main/res/drawable/emoji_carnaval_f3.png diff --git a/app/src/main/res/drawable/emoji_carnaval_f4.png b/emojis/src/main/res/drawable/emoji_carnaval_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_carnaval_f4.png rename to emojis/src/main/res/drawable/emoji_carnaval_f4.png diff --git a/app/src/main/res/drawable/emoji_cell_phone.xml b/emojis/src/main/res/drawable/emoji_cell_phone.xml similarity index 100% rename from app/src/main/res/drawable/emoji_cell_phone.xml rename to emojis/src/main/res/drawable/emoji_cell_phone.xml diff --git a/app/src/main/res/drawable/emoji_cell_phone_f0.png b/emojis/src/main/res/drawable/emoji_cell_phone_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_cell_phone_f0.png rename to emojis/src/main/res/drawable/emoji_cell_phone_f0.png diff --git a/app/src/main/res/drawable/emoji_cell_phone_f1.png b/emojis/src/main/res/drawable/emoji_cell_phone_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_cell_phone_f1.png rename to emojis/src/main/res/drawable/emoji_cell_phone_f1.png diff --git a/app/src/main/res/drawable/emoji_cell_phone_f2.png b/emojis/src/main/res/drawable/emoji_cell_phone_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_cell_phone_f2.png rename to emojis/src/main/res/drawable/emoji_cell_phone_f2.png diff --git a/app/src/main/res/drawable/emoji_cell_phone_f3.png b/emojis/src/main/res/drawable/emoji_cell_phone_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_cell_phone_f3.png rename to emojis/src/main/res/drawable/emoji_cell_phone_f3.png diff --git a/app/src/main/res/drawable/emoji_cheesy.xml b/emojis/src/main/res/drawable/emoji_cheesy.xml similarity index 100% rename from app/src/main/res/drawable/emoji_cheesy.xml rename to emojis/src/main/res/drawable/emoji_cheesy.xml diff --git a/app/src/main/res/drawable/emoji_cheesy_f0.png b/emojis/src/main/res/drawable/emoji_cheesy_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_cheesy_f0.png rename to emojis/src/main/res/drawable/emoji_cheesy_f0.png diff --git a/app/src/main/res/drawable/emoji_cheesy_f1.png b/emojis/src/main/res/drawable/emoji_cheesy_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_cheesy_f1.png rename to emojis/src/main/res/drawable/emoji_cheesy_f1.png diff --git a/app/src/main/res/drawable/emoji_cheesy_f2.png b/emojis/src/main/res/drawable/emoji_cheesy_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_cheesy_f2.png rename to emojis/src/main/res/drawable/emoji_cheesy_f2.png diff --git a/app/src/main/res/drawable/emoji_cheesy_f3.png b/emojis/src/main/res/drawable/emoji_cheesy_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_cheesy_f3.png rename to emojis/src/main/res/drawable/emoji_cheesy_f3.png diff --git a/app/src/main/res/drawable/emoji_clap.xml b/emojis/src/main/res/drawable/emoji_clap.xml similarity index 100% rename from app/src/main/res/drawable/emoji_clap.xml rename to emojis/src/main/res/drawable/emoji_clap.xml diff --git a/app/src/main/res/drawable/emoji_clap_f0.png b/emojis/src/main/res/drawable/emoji_clap_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_clap_f0.png rename to emojis/src/main/res/drawable/emoji_clap_f0.png diff --git a/app/src/main/res/drawable/emoji_clap_f1.png b/emojis/src/main/res/drawable/emoji_clap_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_clap_f1.png rename to emojis/src/main/res/drawable/emoji_clap_f1.png diff --git a/app/src/main/res/drawable/emoji_clap_f2.png b/emojis/src/main/res/drawable/emoji_clap_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_clap_f2.png rename to emojis/src/main/res/drawable/emoji_clap_f2.png diff --git a/app/src/main/res/drawable/emoji_clap_f3.png b/emojis/src/main/res/drawable/emoji_clap_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_clap_f3.png rename to emojis/src/main/res/drawable/emoji_clap_f3.png diff --git a/app/src/main/res/drawable/emoji_clap_f4.png b/emojis/src/main/res/drawable/emoji_clap_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_clap_f4.png rename to emojis/src/main/res/drawable/emoji_clap_f4.png diff --git a/app/src/main/res/drawable/emoji_coffeepot.xml b/emojis/src/main/res/drawable/emoji_coffeepot.xml similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot.xml rename to emojis/src/main/res/drawable/emoji_coffeepot.xml diff --git a/app/src/main/res/drawable/emoji_coffeepot_f0.png b/emojis/src/main/res/drawable/emoji_coffeepot_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f0.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f0.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f1.png b/emojis/src/main/res/drawable/emoji_coffeepot_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f1.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f1.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f10.png b/emojis/src/main/res/drawable/emoji_coffeepot_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f10.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f10.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f11.png b/emojis/src/main/res/drawable/emoji_coffeepot_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f11.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f11.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f12.png b/emojis/src/main/res/drawable/emoji_coffeepot_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f12.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f12.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f13.png b/emojis/src/main/res/drawable/emoji_coffeepot_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f13.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f13.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f14.png b/emojis/src/main/res/drawable/emoji_coffeepot_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f14.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f14.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f15.png b/emojis/src/main/res/drawable/emoji_coffeepot_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f15.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f15.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f2.png b/emojis/src/main/res/drawable/emoji_coffeepot_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f2.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f2.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f3.png b/emojis/src/main/res/drawable/emoji_coffeepot_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f3.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f3.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f4.png b/emojis/src/main/res/drawable/emoji_coffeepot_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f4.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f4.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f5.png b/emojis/src/main/res/drawable/emoji_coffeepot_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f5.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f5.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f6.png b/emojis/src/main/res/drawable/emoji_coffeepot_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f6.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f6.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f7.png b/emojis/src/main/res/drawable/emoji_coffeepot_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f7.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f7.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f8.png b/emojis/src/main/res/drawable/emoji_coffeepot_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f8.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f8.png diff --git a/app/src/main/res/drawable/emoji_coffeepot_f9.png b/emojis/src/main/res/drawable/emoji_coffeepot_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_coffeepot_f9.png rename to emojis/src/main/res/drawable/emoji_coffeepot_f9.png diff --git a/app/src/main/res/drawable/emoji_confused.xml b/emojis/src/main/res/drawable/emoji_confused.xml similarity index 100% rename from app/src/main/res/drawable/emoji_confused.xml rename to emojis/src/main/res/drawable/emoji_confused.xml diff --git a/app/src/main/res/drawable/emoji_confused_f0.png b/emojis/src/main/res/drawable/emoji_confused_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_confused_f0.png rename to emojis/src/main/res/drawable/emoji_confused_f0.png diff --git a/app/src/main/res/drawable/emoji_cool.xml b/emojis/src/main/res/drawable/emoji_cool.xml similarity index 100% rename from app/src/main/res/drawable/emoji_cool.xml rename to emojis/src/main/res/drawable/emoji_cool.xml diff --git a/app/src/main/res/drawable/emoji_cool2.png b/emojis/src/main/res/drawable/emoji_cool2.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool2.png rename to emojis/src/main/res/drawable/emoji_cool2.png diff --git a/app/src/main/res/drawable/emoji_cool_f0.png b/emojis/src/main/res/drawable/emoji_cool_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f0.png rename to emojis/src/main/res/drawable/emoji_cool_f0.png diff --git a/app/src/main/res/drawable/emoji_cool_f1.png b/emojis/src/main/res/drawable/emoji_cool_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f1.png rename to emojis/src/main/res/drawable/emoji_cool_f1.png diff --git a/app/src/main/res/drawable/emoji_cool_f10.png b/emojis/src/main/res/drawable/emoji_cool_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f10.png rename to emojis/src/main/res/drawable/emoji_cool_f10.png diff --git a/app/src/main/res/drawable/emoji_cool_f11.png b/emojis/src/main/res/drawable/emoji_cool_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f11.png rename to emojis/src/main/res/drawable/emoji_cool_f11.png diff --git a/app/src/main/res/drawable/emoji_cool_f12.png b/emojis/src/main/res/drawable/emoji_cool_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f12.png rename to emojis/src/main/res/drawable/emoji_cool_f12.png diff --git a/app/src/main/res/drawable/emoji_cool_f13.png b/emojis/src/main/res/drawable/emoji_cool_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f13.png rename to emojis/src/main/res/drawable/emoji_cool_f13.png diff --git a/app/src/main/res/drawable/emoji_cool_f2.png b/emojis/src/main/res/drawable/emoji_cool_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f2.png rename to emojis/src/main/res/drawable/emoji_cool_f2.png diff --git a/app/src/main/res/drawable/emoji_cool_f3.png b/emojis/src/main/res/drawable/emoji_cool_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f3.png rename to emojis/src/main/res/drawable/emoji_cool_f3.png diff --git a/app/src/main/res/drawable/emoji_cool_f4.png b/emojis/src/main/res/drawable/emoji_cool_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f4.png rename to emojis/src/main/res/drawable/emoji_cool_f4.png diff --git a/app/src/main/res/drawable/emoji_cool_f5.png b/emojis/src/main/res/drawable/emoji_cool_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f5.png rename to emojis/src/main/res/drawable/emoji_cool_f5.png diff --git a/app/src/main/res/drawable/emoji_cool_f6.png b/emojis/src/main/res/drawable/emoji_cool_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f6.png rename to emojis/src/main/res/drawable/emoji_cool_f6.png diff --git a/app/src/main/res/drawable/emoji_cool_f7.png b/emojis/src/main/res/drawable/emoji_cool_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f7.png rename to emojis/src/main/res/drawable/emoji_cool_f7.png diff --git a/app/src/main/res/drawable/emoji_cool_f8.png b/emojis/src/main/res/drawable/emoji_cool_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f8.png rename to emojis/src/main/res/drawable/emoji_cool_f8.png diff --git a/app/src/main/res/drawable/emoji_cool_f9.png b/emojis/src/main/res/drawable/emoji_cool_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_cool_f9.png rename to emojis/src/main/res/drawable/emoji_cool_f9.png diff --git a/app/src/main/res/drawable/emoji_crap.xml b/emojis/src/main/res/drawable/emoji_crap.xml similarity index 100% rename from app/src/main/res/drawable/emoji_crap.xml rename to emojis/src/main/res/drawable/emoji_crap.xml diff --git a/app/src/main/res/drawable/emoji_crap_f0.png b/emojis/src/main/res/drawable/emoji_crap_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_crap_f0.png rename to emojis/src/main/res/drawable/emoji_crap_f0.png diff --git a/app/src/main/res/drawable/emoji_crazy.jpg b/emojis/src/main/res/drawable/emoji_crazy.jpg similarity index 100% rename from app/src/main/res/drawable/emoji_crazy.jpg rename to emojis/src/main/res/drawable/emoji_crazy.jpg diff --git a/app/src/main/res/drawable/emoji_cry.xml b/emojis/src/main/res/drawable/emoji_cry.xml similarity index 100% rename from app/src/main/res/drawable/emoji_cry.xml rename to emojis/src/main/res/drawable/emoji_cry.xml diff --git a/app/src/main/res/drawable/emoji_cry_f0.png b/emojis/src/main/res/drawable/emoji_cry_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_cry_f0.png rename to emojis/src/main/res/drawable/emoji_cry_f0.png diff --git a/app/src/main/res/drawable/emoji_cry_f1.png b/emojis/src/main/res/drawable/emoji_cry_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_cry_f1.png rename to emojis/src/main/res/drawable/emoji_cry_f1.png diff --git a/app/src/main/res/drawable/emoji_cry_f2.png b/emojis/src/main/res/drawable/emoji_cry_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_cry_f2.png rename to emojis/src/main/res/drawable/emoji_cry_f2.png diff --git a/app/src/main/res/drawable/emoji_cry_f3.png b/emojis/src/main/res/drawable/emoji_cry_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_cry_f3.png rename to emojis/src/main/res/drawable/emoji_cry_f3.png diff --git a/app/src/main/res/drawable/emoji_cry_f4.png b/emojis/src/main/res/drawable/emoji_cry_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_cry_f4.png rename to emojis/src/main/res/drawable/emoji_cry_f4.png diff --git a/app/src/main/res/drawable/emoji_crybaby.xml b/emojis/src/main/res/drawable/emoji_crybaby.xml similarity index 100% rename from app/src/main/res/drawable/emoji_crybaby.xml rename to emojis/src/main/res/drawable/emoji_crybaby.xml diff --git a/app/src/main/res/drawable/emoji_crybaby_f0.png b/emojis/src/main/res/drawable/emoji_crybaby_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_crybaby_f0.png rename to emojis/src/main/res/drawable/emoji_crybaby_f0.png diff --git a/app/src/main/res/drawable/emoji_crybaby_f1.png b/emojis/src/main/res/drawable/emoji_crybaby_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_crybaby_f1.png rename to emojis/src/main/res/drawable/emoji_crybaby_f1.png diff --git a/app/src/main/res/drawable/emoji_curses.xml b/emojis/src/main/res/drawable/emoji_curses.xml similarity index 100% rename from app/src/main/res/drawable/emoji_curses.xml rename to emojis/src/main/res/drawable/emoji_curses.xml diff --git a/app/src/main/res/drawable/emoji_curses_f0.png b/emojis/src/main/res/drawable/emoji_curses_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f0.png rename to emojis/src/main/res/drawable/emoji_curses_f0.png diff --git a/app/src/main/res/drawable/emoji_curses_f1.png b/emojis/src/main/res/drawable/emoji_curses_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f1.png rename to emojis/src/main/res/drawable/emoji_curses_f1.png diff --git a/app/src/main/res/drawable/emoji_curses_f10.png b/emojis/src/main/res/drawable/emoji_curses_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f10.png rename to emojis/src/main/res/drawable/emoji_curses_f10.png diff --git a/app/src/main/res/drawable/emoji_curses_f11.png b/emojis/src/main/res/drawable/emoji_curses_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f11.png rename to emojis/src/main/res/drawable/emoji_curses_f11.png diff --git a/app/src/main/res/drawable/emoji_curses_f12.png b/emojis/src/main/res/drawable/emoji_curses_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f12.png rename to emojis/src/main/res/drawable/emoji_curses_f12.png diff --git a/app/src/main/res/drawable/emoji_curses_f13.png b/emojis/src/main/res/drawable/emoji_curses_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f13.png rename to emojis/src/main/res/drawable/emoji_curses_f13.png diff --git a/app/src/main/res/drawable/emoji_curses_f2.png b/emojis/src/main/res/drawable/emoji_curses_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f2.png rename to emojis/src/main/res/drawable/emoji_curses_f2.png diff --git a/app/src/main/res/drawable/emoji_curses_f3.png b/emojis/src/main/res/drawable/emoji_curses_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f3.png rename to emojis/src/main/res/drawable/emoji_curses_f3.png diff --git a/app/src/main/res/drawable/emoji_curses_f4.png b/emojis/src/main/res/drawable/emoji_curses_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f4.png rename to emojis/src/main/res/drawable/emoji_curses_f4.png diff --git a/app/src/main/res/drawable/emoji_curses_f5.png b/emojis/src/main/res/drawable/emoji_curses_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f5.png rename to emojis/src/main/res/drawable/emoji_curses_f5.png diff --git a/app/src/main/res/drawable/emoji_curses_f6.png b/emojis/src/main/res/drawable/emoji_curses_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f6.png rename to emojis/src/main/res/drawable/emoji_curses_f6.png diff --git a/app/src/main/res/drawable/emoji_curses_f7.png b/emojis/src/main/res/drawable/emoji_curses_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f7.png rename to emojis/src/main/res/drawable/emoji_curses_f7.png diff --git a/app/src/main/res/drawable/emoji_curses_f8.png b/emojis/src/main/res/drawable/emoji_curses_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f8.png rename to emojis/src/main/res/drawable/emoji_curses_f8.png diff --git a/app/src/main/res/drawable/emoji_curses_f9.png b/emojis/src/main/res/drawable/emoji_curses_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_curses_f9.png rename to emojis/src/main/res/drawable/emoji_curses_f9.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9.xml b/emojis/src/main/res/drawable/emoji_curtseyqi9.xml similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9.xml rename to emojis/src/main/res/drawable/emoji_curtseyqi9.xml diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f0.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f0.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f0.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f1.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f1.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f1.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f10.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f10.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f10.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f11.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f11.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f11.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f12.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f12.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f12.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f13.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f13.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f13.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f14.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f14.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f14.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f15.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f15.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f15.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f16.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f16.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f16.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f2.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f2.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f2.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f3.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f3.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f3.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f4.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f4.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f4.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f5.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f5.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f5.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f6.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f6.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f6.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f7.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f7.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f7.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f8.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f8.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f8.png diff --git a/app/src/main/res/drawable/emoji_curtseyqi9_f9.png b/emojis/src/main/res/drawable/emoji_curtseyqi9_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_curtseyqi9_f9.png rename to emojis/src/main/res/drawable/emoji_curtseyqi9_f9.png diff --git a/app/src/main/res/drawable/emoji_dontknow.xml b/emojis/src/main/res/drawable/emoji_dontknow.xml similarity index 100% rename from app/src/main/res/drawable/emoji_dontknow.xml rename to emojis/src/main/res/drawable/emoji_dontknow.xml diff --git a/app/src/main/res/drawable/emoji_dontknow_f0.png b/emojis/src/main/res/drawable/emoji_dontknow_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_dontknow_f0.png rename to emojis/src/main/res/drawable/emoji_dontknow_f0.png diff --git a/app/src/main/res/drawable/emoji_dontknow_f1.png b/emojis/src/main/res/drawable/emoji_dontknow_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_dontknow_f1.png rename to emojis/src/main/res/drawable/emoji_dontknow_f1.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e.xml b/emojis/src/main/res/drawable/emoji_e10_7_3e.xml similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e.xml rename to emojis/src/main/res/drawable/emoji_e10_7_3e.xml diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f0.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f0.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f0.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f1.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f1.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f1.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f10.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f10.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f10.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f11.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f11.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f11.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f12.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f12.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f12.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f13.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f13.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f13.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f14.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f14.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f14.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f15.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f15.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f15.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f16.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f16.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f16.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f17.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f17.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f17.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f18.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f18.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f18.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f19.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f19.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f19.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f2.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f2.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f2.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f20.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f20.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f20.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f21.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f21.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f21.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f22.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f22.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f22.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f23.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f23.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f23.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f24.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f24.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f24.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f25.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f25.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f25.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f26.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f26.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f26.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f27.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f27.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f27.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f28.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f28.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f28.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f29.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f29.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f29.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f3.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f3.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f3.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f30.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f30.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f30.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f31.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f31.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f31.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f32.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f32.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f32.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f33.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f33.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f33.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f34.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f34.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f34.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f35.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f35.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f35.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f36.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f36.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f36.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f37.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f37.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f37.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f38.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f38.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f38.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f39.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f39.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f39.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f4.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f4.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f4.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f40.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f40.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f40.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f41.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f41.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f41.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f42.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f42.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f42.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f43.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f43.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f43.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f44.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f44.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f44.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f45.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f45.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f45.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f46.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f46.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f46.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f47.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f47.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f47.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f48.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f48.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f48.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f49.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f49.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f49.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f5.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f5.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f5.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f50.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f50.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f50.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f50.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f51.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f51.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f51.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f51.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f52.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f52.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f52.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f52.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f53.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f53.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f53.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f53.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f54.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f54.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f54.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f54.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f55.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f55.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f55.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f55.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f56.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f56.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f56.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f56.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f57.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f57.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f57.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f57.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f58.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f58.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f58.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f58.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f59.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f59.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f59.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f59.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f6.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f6.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f6.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f60.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f60.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f60.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f60.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f61.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f61.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f61.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f61.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f7.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f7.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f7.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f8.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f8.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f8.png diff --git a/app/src/main/res/drawable/emoji_e10_7_3e_f9.png b/emojis/src/main/res/drawable/emoji_e10_7_3e_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_e10_7_3e_f9.png rename to emojis/src/main/res/drawable/emoji_e10_7_3e_f9.png diff --git a/app/src/main/res/drawable/emoji_embarrassed.xml b/emojis/src/main/res/drawable/emoji_embarrassed.xml similarity index 100% rename from app/src/main/res/drawable/emoji_embarrassed.xml rename to emojis/src/main/res/drawable/emoji_embarrassed.xml diff --git a/app/src/main/res/drawable/emoji_embarrassed_f0.png b/emojis/src/main/res/drawable/emoji_embarrassed_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_embarrassed_f0.png rename to emojis/src/main/res/drawable/emoji_embarrassed_f0.png diff --git a/app/src/main/res/drawable/emoji_embarrassed_f1.png b/emojis/src/main/res/drawable/emoji_embarrassed_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_embarrassed_f1.png rename to emojis/src/main/res/drawable/emoji_embarrassed_f1.png diff --git a/app/src/main/res/drawable/emoji_embarrassed_f2.png b/emojis/src/main/res/drawable/emoji_embarrassed_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_embarrassed_f2.png rename to emojis/src/main/res/drawable/emoji_embarrassed_f2.png diff --git a/app/src/main/res/drawable/emoji_embarrassed_f3.png b/emojis/src/main/res/drawable/emoji_embarrassed_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_embarrassed_f3.png rename to emojis/src/main/res/drawable/emoji_embarrassed_f3.png diff --git a/app/src/main/res/drawable/emoji_esuper.xml b/emojis/src/main/res/drawable/emoji_esuper.xml similarity index 100% rename from app/src/main/res/drawable/emoji_esuper.xml rename to emojis/src/main/res/drawable/emoji_esuper.xml diff --git a/app/src/main/res/drawable/emoji_esuper_f0.png b/emojis/src/main/res/drawable/emoji_esuper_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_esuper_f0.png rename to emojis/src/main/res/drawable/emoji_esuper_f0.png diff --git a/app/src/main/res/drawable/emoji_extremely_shocked.png b/emojis/src/main/res/drawable/emoji_extremely_shocked.png similarity index 100% rename from app/src/main/res/drawable/emoji_extremely_shocked.png rename to emojis/src/main/res/drawable/emoji_extremely_shocked.png diff --git a/app/src/main/res/drawable/emoji_facepalm.xml b/emojis/src/main/res/drawable/emoji_facepalm.xml similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm.xml rename to emojis/src/main/res/drawable/emoji_facepalm.xml diff --git a/app/src/main/res/drawable/emoji_facepalm_f0.png b/emojis/src/main/res/drawable/emoji_facepalm_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f0.png rename to emojis/src/main/res/drawable/emoji_facepalm_f0.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f1.png b/emojis/src/main/res/drawable/emoji_facepalm_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f1.png rename to emojis/src/main/res/drawable/emoji_facepalm_f1.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f2.png b/emojis/src/main/res/drawable/emoji_facepalm_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f2.png rename to emojis/src/main/res/drawable/emoji_facepalm_f2.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f3.png b/emojis/src/main/res/drawable/emoji_facepalm_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f3.png rename to emojis/src/main/res/drawable/emoji_facepalm_f3.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f4.png b/emojis/src/main/res/drawable/emoji_facepalm_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f4.png rename to emojis/src/main/res/drawable/emoji_facepalm_f4.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f5.png b/emojis/src/main/res/drawable/emoji_facepalm_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f5.png rename to emojis/src/main/res/drawable/emoji_facepalm_f5.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f6.png b/emojis/src/main/res/drawable/emoji_facepalm_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f6.png rename to emojis/src/main/res/drawable/emoji_facepalm_f6.png diff --git a/app/src/main/res/drawable/emoji_facepalm_f7.png b/emojis/src/main/res/drawable/emoji_facepalm_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_facepalm_f7.png rename to emojis/src/main/res/drawable/emoji_facepalm_f7.png diff --git a/app/src/main/res/drawable/emoji_filarakia.xml b/emojis/src/main/res/drawable/emoji_filarakia.xml similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia.xml rename to emojis/src/main/res/drawable/emoji_filarakia.xml diff --git a/app/src/main/res/drawable/emoji_filarakia_f0.png b/emojis/src/main/res/drawable/emoji_filarakia_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f0.png rename to emojis/src/main/res/drawable/emoji_filarakia_f0.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f1.png b/emojis/src/main/res/drawable/emoji_filarakia_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f1.png rename to emojis/src/main/res/drawable/emoji_filarakia_f1.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f10.png b/emojis/src/main/res/drawable/emoji_filarakia_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f10.png rename to emojis/src/main/res/drawable/emoji_filarakia_f10.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f11.png b/emojis/src/main/res/drawable/emoji_filarakia_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f11.png rename to emojis/src/main/res/drawable/emoji_filarakia_f11.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f12.png b/emojis/src/main/res/drawable/emoji_filarakia_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f12.png rename to emojis/src/main/res/drawable/emoji_filarakia_f12.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f13.png b/emojis/src/main/res/drawable/emoji_filarakia_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f13.png rename to emojis/src/main/res/drawable/emoji_filarakia_f13.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f14.png b/emojis/src/main/res/drawable/emoji_filarakia_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f14.png rename to emojis/src/main/res/drawable/emoji_filarakia_f14.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f15.png b/emojis/src/main/res/drawable/emoji_filarakia_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f15.png rename to emojis/src/main/res/drawable/emoji_filarakia_f15.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f16.png b/emojis/src/main/res/drawable/emoji_filarakia_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f16.png rename to emojis/src/main/res/drawable/emoji_filarakia_f16.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f17.png b/emojis/src/main/res/drawable/emoji_filarakia_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f17.png rename to emojis/src/main/res/drawable/emoji_filarakia_f17.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f18.png b/emojis/src/main/res/drawable/emoji_filarakia_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f18.png rename to emojis/src/main/res/drawable/emoji_filarakia_f18.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f19.png b/emojis/src/main/res/drawable/emoji_filarakia_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f19.png rename to emojis/src/main/res/drawable/emoji_filarakia_f19.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f2.png b/emojis/src/main/res/drawable/emoji_filarakia_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f2.png rename to emojis/src/main/res/drawable/emoji_filarakia_f2.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f20.png b/emojis/src/main/res/drawable/emoji_filarakia_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f20.png rename to emojis/src/main/res/drawable/emoji_filarakia_f20.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f21.png b/emojis/src/main/res/drawable/emoji_filarakia_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f21.png rename to emojis/src/main/res/drawable/emoji_filarakia_f21.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f22.png b/emojis/src/main/res/drawable/emoji_filarakia_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f22.png rename to emojis/src/main/res/drawable/emoji_filarakia_f22.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f23.png b/emojis/src/main/res/drawable/emoji_filarakia_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f23.png rename to emojis/src/main/res/drawable/emoji_filarakia_f23.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f24.png b/emojis/src/main/res/drawable/emoji_filarakia_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f24.png rename to emojis/src/main/res/drawable/emoji_filarakia_f24.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f25.png b/emojis/src/main/res/drawable/emoji_filarakia_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f25.png rename to emojis/src/main/res/drawable/emoji_filarakia_f25.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f26.png b/emojis/src/main/res/drawable/emoji_filarakia_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f26.png rename to emojis/src/main/res/drawable/emoji_filarakia_f26.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f27.png b/emojis/src/main/res/drawable/emoji_filarakia_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f27.png rename to emojis/src/main/res/drawable/emoji_filarakia_f27.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f28.png b/emojis/src/main/res/drawable/emoji_filarakia_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f28.png rename to emojis/src/main/res/drawable/emoji_filarakia_f28.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f29.png b/emojis/src/main/res/drawable/emoji_filarakia_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f29.png rename to emojis/src/main/res/drawable/emoji_filarakia_f29.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f3.png b/emojis/src/main/res/drawable/emoji_filarakia_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f3.png rename to emojis/src/main/res/drawable/emoji_filarakia_f3.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f30.png b/emojis/src/main/res/drawable/emoji_filarakia_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f30.png rename to emojis/src/main/res/drawable/emoji_filarakia_f30.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f31.png b/emojis/src/main/res/drawable/emoji_filarakia_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f31.png rename to emojis/src/main/res/drawable/emoji_filarakia_f31.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f32.png b/emojis/src/main/res/drawable/emoji_filarakia_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f32.png rename to emojis/src/main/res/drawable/emoji_filarakia_f32.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f33.png b/emojis/src/main/res/drawable/emoji_filarakia_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f33.png rename to emojis/src/main/res/drawable/emoji_filarakia_f33.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f34.png b/emojis/src/main/res/drawable/emoji_filarakia_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f34.png rename to emojis/src/main/res/drawable/emoji_filarakia_f34.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f35.png b/emojis/src/main/res/drawable/emoji_filarakia_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f35.png rename to emojis/src/main/res/drawable/emoji_filarakia_f35.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f36.png b/emojis/src/main/res/drawable/emoji_filarakia_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f36.png rename to emojis/src/main/res/drawable/emoji_filarakia_f36.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f37.png b/emojis/src/main/res/drawable/emoji_filarakia_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f37.png rename to emojis/src/main/res/drawable/emoji_filarakia_f37.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f38.png b/emojis/src/main/res/drawable/emoji_filarakia_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f38.png rename to emojis/src/main/res/drawable/emoji_filarakia_f38.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f39.png b/emojis/src/main/res/drawable/emoji_filarakia_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f39.png rename to emojis/src/main/res/drawable/emoji_filarakia_f39.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f4.png b/emojis/src/main/res/drawable/emoji_filarakia_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f4.png rename to emojis/src/main/res/drawable/emoji_filarakia_f4.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f40.png b/emojis/src/main/res/drawable/emoji_filarakia_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f40.png rename to emojis/src/main/res/drawable/emoji_filarakia_f40.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f5.png b/emojis/src/main/res/drawable/emoji_filarakia_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f5.png rename to emojis/src/main/res/drawable/emoji_filarakia_f5.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f6.png b/emojis/src/main/res/drawable/emoji_filarakia_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f6.png rename to emojis/src/main/res/drawable/emoji_filarakia_f6.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f7.png b/emojis/src/main/res/drawable/emoji_filarakia_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f7.png rename to emojis/src/main/res/drawable/emoji_filarakia_f7.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f8.png b/emojis/src/main/res/drawable/emoji_filarakia_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f8.png rename to emojis/src/main/res/drawable/emoji_filarakia_f8.png diff --git a/app/src/main/res/drawable/emoji_filarakia_f9.png b/emojis/src/main/res/drawable/emoji_filarakia_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_filarakia_f9.png rename to emojis/src/main/res/drawable/emoji_filarakia_f9.png diff --git a/app/src/main/res/drawable/emoji_foyska.xml b/emojis/src/main/res/drawable/emoji_foyska.xml similarity index 100% rename from app/src/main/res/drawable/emoji_foyska.xml rename to emojis/src/main/res/drawable/emoji_foyska.xml diff --git a/app/src/main/res/drawable/emoji_foyska_f0.png b/emojis/src/main/res/drawable/emoji_foyska_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f0.png rename to emojis/src/main/res/drawable/emoji_foyska_f0.png diff --git a/app/src/main/res/drawable/emoji_foyska_f1.png b/emojis/src/main/res/drawable/emoji_foyska_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f1.png rename to emojis/src/main/res/drawable/emoji_foyska_f1.png diff --git a/app/src/main/res/drawable/emoji_foyska_f10.png b/emojis/src/main/res/drawable/emoji_foyska_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f10.png rename to emojis/src/main/res/drawable/emoji_foyska_f10.png diff --git a/app/src/main/res/drawable/emoji_foyska_f11.png b/emojis/src/main/res/drawable/emoji_foyska_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f11.png rename to emojis/src/main/res/drawable/emoji_foyska_f11.png diff --git a/app/src/main/res/drawable/emoji_foyska_f12.png b/emojis/src/main/res/drawable/emoji_foyska_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f12.png rename to emojis/src/main/res/drawable/emoji_foyska_f12.png diff --git a/app/src/main/res/drawable/emoji_foyska_f13.png b/emojis/src/main/res/drawable/emoji_foyska_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f13.png rename to emojis/src/main/res/drawable/emoji_foyska_f13.png diff --git a/app/src/main/res/drawable/emoji_foyska_f14.png b/emojis/src/main/res/drawable/emoji_foyska_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f14.png rename to emojis/src/main/res/drawable/emoji_foyska_f14.png diff --git a/app/src/main/res/drawable/emoji_foyska_f15.png b/emojis/src/main/res/drawable/emoji_foyska_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f15.png rename to emojis/src/main/res/drawable/emoji_foyska_f15.png diff --git a/app/src/main/res/drawable/emoji_foyska_f16.png b/emojis/src/main/res/drawable/emoji_foyska_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f16.png rename to emojis/src/main/res/drawable/emoji_foyska_f16.png diff --git a/app/src/main/res/drawable/emoji_foyska_f17.png b/emojis/src/main/res/drawable/emoji_foyska_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f17.png rename to emojis/src/main/res/drawable/emoji_foyska_f17.png diff --git a/app/src/main/res/drawable/emoji_foyska_f18.png b/emojis/src/main/res/drawable/emoji_foyska_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f18.png rename to emojis/src/main/res/drawable/emoji_foyska_f18.png diff --git a/app/src/main/res/drawable/emoji_foyska_f19.png b/emojis/src/main/res/drawable/emoji_foyska_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f19.png rename to emojis/src/main/res/drawable/emoji_foyska_f19.png diff --git a/app/src/main/res/drawable/emoji_foyska_f2.png b/emojis/src/main/res/drawable/emoji_foyska_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f2.png rename to emojis/src/main/res/drawable/emoji_foyska_f2.png diff --git a/app/src/main/res/drawable/emoji_foyska_f20.png b/emojis/src/main/res/drawable/emoji_foyska_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f20.png rename to emojis/src/main/res/drawable/emoji_foyska_f20.png diff --git a/app/src/main/res/drawable/emoji_foyska_f21.png b/emojis/src/main/res/drawable/emoji_foyska_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f21.png rename to emojis/src/main/res/drawable/emoji_foyska_f21.png diff --git a/app/src/main/res/drawable/emoji_foyska_f22.png b/emojis/src/main/res/drawable/emoji_foyska_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f22.png rename to emojis/src/main/res/drawable/emoji_foyska_f22.png diff --git a/app/src/main/res/drawable/emoji_foyska_f23.png b/emojis/src/main/res/drawable/emoji_foyska_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f23.png rename to emojis/src/main/res/drawable/emoji_foyska_f23.png diff --git a/app/src/main/res/drawable/emoji_foyska_f24.png b/emojis/src/main/res/drawable/emoji_foyska_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f24.png rename to emojis/src/main/res/drawable/emoji_foyska_f24.png diff --git a/app/src/main/res/drawable/emoji_foyska_f25.png b/emojis/src/main/res/drawable/emoji_foyska_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f25.png rename to emojis/src/main/res/drawable/emoji_foyska_f25.png diff --git a/app/src/main/res/drawable/emoji_foyska_f26.png b/emojis/src/main/res/drawable/emoji_foyska_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f26.png rename to emojis/src/main/res/drawable/emoji_foyska_f26.png diff --git a/app/src/main/res/drawable/emoji_foyska_f27.png b/emojis/src/main/res/drawable/emoji_foyska_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f27.png rename to emojis/src/main/res/drawable/emoji_foyska_f27.png diff --git a/app/src/main/res/drawable/emoji_foyska_f28.png b/emojis/src/main/res/drawable/emoji_foyska_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f28.png rename to emojis/src/main/res/drawable/emoji_foyska_f28.png diff --git a/app/src/main/res/drawable/emoji_foyska_f29.png b/emojis/src/main/res/drawable/emoji_foyska_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f29.png rename to emojis/src/main/res/drawable/emoji_foyska_f29.png diff --git a/app/src/main/res/drawable/emoji_foyska_f3.png b/emojis/src/main/res/drawable/emoji_foyska_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f3.png rename to emojis/src/main/res/drawable/emoji_foyska_f3.png diff --git a/app/src/main/res/drawable/emoji_foyska_f30.png b/emojis/src/main/res/drawable/emoji_foyska_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f30.png rename to emojis/src/main/res/drawable/emoji_foyska_f30.png diff --git a/app/src/main/res/drawable/emoji_foyska_f4.png b/emojis/src/main/res/drawable/emoji_foyska_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f4.png rename to emojis/src/main/res/drawable/emoji_foyska_f4.png diff --git a/app/src/main/res/drawable/emoji_foyska_f5.png b/emojis/src/main/res/drawable/emoji_foyska_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f5.png rename to emojis/src/main/res/drawable/emoji_foyska_f5.png diff --git a/app/src/main/res/drawable/emoji_foyska_f6.png b/emojis/src/main/res/drawable/emoji_foyska_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f6.png rename to emojis/src/main/res/drawable/emoji_foyska_f6.png diff --git a/app/src/main/res/drawable/emoji_foyska_f7.png b/emojis/src/main/res/drawable/emoji_foyska_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f7.png rename to emojis/src/main/res/drawable/emoji_foyska_f7.png diff --git a/app/src/main/res/drawable/emoji_foyska_f8.png b/emojis/src/main/res/drawable/emoji_foyska_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f8.png rename to emojis/src/main/res/drawable/emoji_foyska_f8.png diff --git a/app/src/main/res/drawable/emoji_foyska_f9.png b/emojis/src/main/res/drawable/emoji_foyska_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_foyska_f9.png rename to emojis/src/main/res/drawable/emoji_foyska_f9.png diff --git a/app/src/main/res/drawable/emoji_fritz.xml b/emojis/src/main/res/drawable/emoji_fritz.xml similarity index 100% rename from app/src/main/res/drawable/emoji_fritz.xml rename to emojis/src/main/res/drawable/emoji_fritz.xml diff --git a/app/src/main/res/drawable/emoji_fritz_f0.png b/emojis/src/main/res/drawable/emoji_fritz_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_fritz_f0.png rename to emojis/src/main/res/drawable/emoji_fritz_f0.png diff --git a/app/src/main/res/drawable/emoji_funny.xml b/emojis/src/main/res/drawable/emoji_funny.xml similarity index 100% rename from app/src/main/res/drawable/emoji_funny.xml rename to emojis/src/main/res/drawable/emoji_funny.xml diff --git a/app/src/main/res/drawable/emoji_funny_f0.png b/emojis/src/main/res/drawable/emoji_funny_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_funny_f0.png rename to emojis/src/main/res/drawable/emoji_funny_f0.png diff --git a/app/src/main/res/drawable/emoji_grin.xml b/emojis/src/main/res/drawable/emoji_grin.xml similarity index 100% rename from app/src/main/res/drawable/emoji_grin.xml rename to emojis/src/main/res/drawable/emoji_grin.xml diff --git a/app/src/main/res/drawable/emoji_grin_f0.png b/emojis/src/main/res/drawable/emoji_grin_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_grin_f0.png rename to emojis/src/main/res/drawable/emoji_grin_f0.png diff --git a/app/src/main/res/drawable/emoji_grin_f1.png b/emojis/src/main/res/drawable/emoji_grin_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_grin_f1.png rename to emojis/src/main/res/drawable/emoji_grin_f1.png diff --git a/app/src/main/res/drawable/emoji_grin_f2.png b/emojis/src/main/res/drawable/emoji_grin_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_grin_f2.png rename to emojis/src/main/res/drawable/emoji_grin_f2.png diff --git a/app/src/main/res/drawable/emoji_grin_f3.png b/emojis/src/main/res/drawable/emoji_grin_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_grin_f3.png rename to emojis/src/main/res/drawable/emoji_grin_f3.png diff --git a/app/src/main/res/drawable/emoji_guitar1.xml b/emojis/src/main/res/drawable/emoji_guitar1.xml similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1.xml rename to emojis/src/main/res/drawable/emoji_guitar1.xml diff --git a/app/src/main/res/drawable/emoji_guitar1_f0.png b/emojis/src/main/res/drawable/emoji_guitar1_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f0.png rename to emojis/src/main/res/drawable/emoji_guitar1_f0.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f1.png b/emojis/src/main/res/drawable/emoji_guitar1_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f1.png rename to emojis/src/main/res/drawable/emoji_guitar1_f1.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f10.png b/emojis/src/main/res/drawable/emoji_guitar1_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f10.png rename to emojis/src/main/res/drawable/emoji_guitar1_f10.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f2.png b/emojis/src/main/res/drawable/emoji_guitar1_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f2.png rename to emojis/src/main/res/drawable/emoji_guitar1_f2.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f3.png b/emojis/src/main/res/drawable/emoji_guitar1_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f3.png rename to emojis/src/main/res/drawable/emoji_guitar1_f3.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f4.png b/emojis/src/main/res/drawable/emoji_guitar1_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f4.png rename to emojis/src/main/res/drawable/emoji_guitar1_f4.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f5.png b/emojis/src/main/res/drawable/emoji_guitar1_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f5.png rename to emojis/src/main/res/drawable/emoji_guitar1_f5.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f6.png b/emojis/src/main/res/drawable/emoji_guitar1_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f6.png rename to emojis/src/main/res/drawable/emoji_guitar1_f6.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f7.png b/emojis/src/main/res/drawable/emoji_guitar1_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f7.png rename to emojis/src/main/res/drawable/emoji_guitar1_f7.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f8.png b/emojis/src/main/res/drawable/emoji_guitar1_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f8.png rename to emojis/src/main/res/drawable/emoji_guitar1_f8.png diff --git a/app/src/main/res/drawable/emoji_guitar1_f9.png b/emojis/src/main/res/drawable/emoji_guitar1_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_guitar1_f9.png rename to emojis/src/main/res/drawable/emoji_guitar1_f9.png diff --git a/app/src/main/res/drawable/emoji_heart.xml b/emojis/src/main/res/drawable/emoji_heart.xml similarity index 100% rename from app/src/main/res/drawable/emoji_heart.xml rename to emojis/src/main/res/drawable/emoji_heart.xml diff --git a/app/src/main/res/drawable/emoji_heart_f0.png b/emojis/src/main/res/drawable/emoji_heart_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_heart_f0.png rename to emojis/src/main/res/drawable/emoji_heart_f0.png diff --git a/app/src/main/res/drawable/emoji_hello.xml b/emojis/src/main/res/drawable/emoji_hello.xml similarity index 100% rename from app/src/main/res/drawable/emoji_hello.xml rename to emojis/src/main/res/drawable/emoji_hello.xml diff --git a/app/src/main/res/drawable/emoji_hello_f0.png b/emojis/src/main/res/drawable/emoji_hello_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_hello_f0.png rename to emojis/src/main/res/drawable/emoji_hello_f0.png diff --git a/app/src/main/res/drawable/emoji_hello_f1.png b/emojis/src/main/res/drawable/emoji_hello_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_hello_f1.png rename to emojis/src/main/res/drawable/emoji_hello_f1.png diff --git a/app/src/main/res/drawable/emoji_hello_f2.png b/emojis/src/main/res/drawable/emoji_hello_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_hello_f2.png rename to emojis/src/main/res/drawable/emoji_hello_f2.png diff --git a/app/src/main/res/drawable/emoji_hello_f3.png b/emojis/src/main/res/drawable/emoji_hello_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_hello_f3.png rename to emojis/src/main/res/drawable/emoji_hello_f3.png diff --git a/app/src/main/res/drawable/emoji_huh.xml b/emojis/src/main/res/drawable/emoji_huh.xml similarity index 100% rename from app/src/main/res/drawable/emoji_huh.xml rename to emojis/src/main/res/drawable/emoji_huh.xml diff --git a/app/src/main/res/drawable/emoji_huh_f0.png b/emojis/src/main/res/drawable/emoji_huh_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_huh_f0.png rename to emojis/src/main/res/drawable/emoji_huh_f0.png diff --git a/app/src/main/res/drawable/emoji_huh_f1.png b/emojis/src/main/res/drawable/emoji_huh_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_huh_f1.png rename to emojis/src/main/res/drawable/emoji_huh_f1.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy.xml b/emojis/src/main/res/drawable/emoji_icon_kissy.xml similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy.xml rename to emojis/src/main/res/drawable/emoji_icon_kissy.xml diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f0.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f0.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f0.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f1.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f1.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f1.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f10.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f10.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f10.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f11.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f11.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f11.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f12.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f12.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f12.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f13.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f13.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f13.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f14.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f14.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f14.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f15.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f15.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f15.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f2.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f2.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f2.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f3.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f3.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f3.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f4.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f4.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f4.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f5.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f5.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f5.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f6.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f6.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f6.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f7.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f7.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f7.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f8.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f8.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f8.png diff --git a/app/src/main/res/drawable/emoji_icon_kissy_f9.png b/emojis/src/main/res/drawable/emoji_icon_kissy_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_icon_kissy_f9.png rename to emojis/src/main/res/drawable/emoji_icon_kissy_f9.png diff --git a/app/src/main/res/drawable/emoji_idiot.xml b/emojis/src/main/res/drawable/emoji_idiot.xml similarity index 100% rename from app/src/main/res/drawable/emoji_idiot.xml rename to emojis/src/main/res/drawable/emoji_idiot.xml diff --git a/app/src/main/res/drawable/emoji_idiot_f0.png b/emojis/src/main/res/drawable/emoji_idiot_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f0.png rename to emojis/src/main/res/drawable/emoji_idiot_f0.png diff --git a/app/src/main/res/drawable/emoji_idiot_f1.png b/emojis/src/main/res/drawable/emoji_idiot_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f1.png rename to emojis/src/main/res/drawable/emoji_idiot_f1.png diff --git a/app/src/main/res/drawable/emoji_idiot_f2.png b/emojis/src/main/res/drawable/emoji_idiot_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f2.png rename to emojis/src/main/res/drawable/emoji_idiot_f2.png diff --git a/app/src/main/res/drawable/emoji_idiot_f3.png b/emojis/src/main/res/drawable/emoji_idiot_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f3.png rename to emojis/src/main/res/drawable/emoji_idiot_f3.png diff --git a/app/src/main/res/drawable/emoji_idiot_f4.png b/emojis/src/main/res/drawable/emoji_idiot_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f4.png rename to emojis/src/main/res/drawable/emoji_idiot_f4.png diff --git a/app/src/main/res/drawable/emoji_idiot_f5.png b/emojis/src/main/res/drawable/emoji_idiot_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f5.png rename to emojis/src/main/res/drawable/emoji_idiot_f5.png diff --git a/app/src/main/res/drawable/emoji_idiot_f6.png b/emojis/src/main/res/drawable/emoji_idiot_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f6.png rename to emojis/src/main/res/drawable/emoji_idiot_f6.png diff --git a/app/src/main/res/drawable/emoji_idiot_f7.png b/emojis/src/main/res/drawable/emoji_idiot_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_idiot_f7.png rename to emojis/src/main/res/drawable/emoji_idiot_f7.png diff --git a/app/src/main/res/drawable/emoji_innocent.xml b/emojis/src/main/res/drawable/emoji_innocent.xml similarity index 100% rename from app/src/main/res/drawable/emoji_innocent.xml rename to emojis/src/main/res/drawable/emoji_innocent.xml diff --git a/app/src/main/res/drawable/emoji_innocent_f0.png b/emojis/src/main/res/drawable/emoji_innocent_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_innocent_f0.png rename to emojis/src/main/res/drawable/emoji_innocent_f0.png diff --git a/app/src/main/res/drawable/emoji_ivres.xml b/emojis/src/main/res/drawable/emoji_ivres.xml similarity index 100% rename from app/src/main/res/drawable/emoji_ivres.xml rename to emojis/src/main/res/drawable/emoji_ivres.xml diff --git a/app/src/main/res/drawable/emoji_ivres_f0.png b/emojis/src/main/res/drawable/emoji_ivres_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f0.png rename to emojis/src/main/res/drawable/emoji_ivres_f0.png diff --git a/app/src/main/res/drawable/emoji_ivres_f1.png b/emojis/src/main/res/drawable/emoji_ivres_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f1.png rename to emojis/src/main/res/drawable/emoji_ivres_f1.png diff --git a/app/src/main/res/drawable/emoji_ivres_f10.png b/emojis/src/main/res/drawable/emoji_ivres_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f10.png rename to emojis/src/main/res/drawable/emoji_ivres_f10.png diff --git a/app/src/main/res/drawable/emoji_ivres_f11.png b/emojis/src/main/res/drawable/emoji_ivres_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f11.png rename to emojis/src/main/res/drawable/emoji_ivres_f11.png diff --git a/app/src/main/res/drawable/emoji_ivres_f12.png b/emojis/src/main/res/drawable/emoji_ivres_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f12.png rename to emojis/src/main/res/drawable/emoji_ivres_f12.png diff --git a/app/src/main/res/drawable/emoji_ivres_f13.png b/emojis/src/main/res/drawable/emoji_ivres_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f13.png rename to emojis/src/main/res/drawable/emoji_ivres_f13.png diff --git a/app/src/main/res/drawable/emoji_ivres_f14.png b/emojis/src/main/res/drawable/emoji_ivres_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f14.png rename to emojis/src/main/res/drawable/emoji_ivres_f14.png diff --git a/app/src/main/res/drawable/emoji_ivres_f15.png b/emojis/src/main/res/drawable/emoji_ivres_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f15.png rename to emojis/src/main/res/drawable/emoji_ivres_f15.png diff --git a/app/src/main/res/drawable/emoji_ivres_f16.png b/emojis/src/main/res/drawable/emoji_ivres_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f16.png rename to emojis/src/main/res/drawable/emoji_ivres_f16.png diff --git a/app/src/main/res/drawable/emoji_ivres_f17.png b/emojis/src/main/res/drawable/emoji_ivres_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f17.png rename to emojis/src/main/res/drawable/emoji_ivres_f17.png diff --git a/app/src/main/res/drawable/emoji_ivres_f18.png b/emojis/src/main/res/drawable/emoji_ivres_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f18.png rename to emojis/src/main/res/drawable/emoji_ivres_f18.png diff --git a/app/src/main/res/drawable/emoji_ivres_f19.png b/emojis/src/main/res/drawable/emoji_ivres_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f19.png rename to emojis/src/main/res/drawable/emoji_ivres_f19.png diff --git a/app/src/main/res/drawable/emoji_ivres_f2.png b/emojis/src/main/res/drawable/emoji_ivres_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f2.png rename to emojis/src/main/res/drawable/emoji_ivres_f2.png diff --git a/app/src/main/res/drawable/emoji_ivres_f20.png b/emojis/src/main/res/drawable/emoji_ivres_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f20.png rename to emojis/src/main/res/drawable/emoji_ivres_f20.png diff --git a/app/src/main/res/drawable/emoji_ivres_f21.png b/emojis/src/main/res/drawable/emoji_ivres_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f21.png rename to emojis/src/main/res/drawable/emoji_ivres_f21.png diff --git a/app/src/main/res/drawable/emoji_ivres_f22.png b/emojis/src/main/res/drawable/emoji_ivres_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f22.png rename to emojis/src/main/res/drawable/emoji_ivres_f22.png diff --git a/app/src/main/res/drawable/emoji_ivres_f23.png b/emojis/src/main/res/drawable/emoji_ivres_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f23.png rename to emojis/src/main/res/drawable/emoji_ivres_f23.png diff --git a/app/src/main/res/drawable/emoji_ivres_f24.png b/emojis/src/main/res/drawable/emoji_ivres_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f24.png rename to emojis/src/main/res/drawable/emoji_ivres_f24.png diff --git a/app/src/main/res/drawable/emoji_ivres_f25.png b/emojis/src/main/res/drawable/emoji_ivres_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f25.png rename to emojis/src/main/res/drawable/emoji_ivres_f25.png diff --git a/app/src/main/res/drawable/emoji_ivres_f26.png b/emojis/src/main/res/drawable/emoji_ivres_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f26.png rename to emojis/src/main/res/drawable/emoji_ivres_f26.png diff --git a/app/src/main/res/drawable/emoji_ivres_f27.png b/emojis/src/main/res/drawable/emoji_ivres_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f27.png rename to emojis/src/main/res/drawable/emoji_ivres_f27.png diff --git a/app/src/main/res/drawable/emoji_ivres_f28.png b/emojis/src/main/res/drawable/emoji_ivres_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f28.png rename to emojis/src/main/res/drawable/emoji_ivres_f28.png diff --git a/app/src/main/res/drawable/emoji_ivres_f29.png b/emojis/src/main/res/drawable/emoji_ivres_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f29.png rename to emojis/src/main/res/drawable/emoji_ivres_f29.png diff --git a/app/src/main/res/drawable/emoji_ivres_f3.png b/emojis/src/main/res/drawable/emoji_ivres_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f3.png rename to emojis/src/main/res/drawable/emoji_ivres_f3.png diff --git a/app/src/main/res/drawable/emoji_ivres_f30.png b/emojis/src/main/res/drawable/emoji_ivres_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f30.png rename to emojis/src/main/res/drawable/emoji_ivres_f30.png diff --git a/app/src/main/res/drawable/emoji_ivres_f31.png b/emojis/src/main/res/drawable/emoji_ivres_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f31.png rename to emojis/src/main/res/drawable/emoji_ivres_f31.png diff --git a/app/src/main/res/drawable/emoji_ivres_f32.png b/emojis/src/main/res/drawable/emoji_ivres_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f32.png rename to emojis/src/main/res/drawable/emoji_ivres_f32.png diff --git a/app/src/main/res/drawable/emoji_ivres_f33.png b/emojis/src/main/res/drawable/emoji_ivres_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f33.png rename to emojis/src/main/res/drawable/emoji_ivres_f33.png diff --git a/app/src/main/res/drawable/emoji_ivres_f34.png b/emojis/src/main/res/drawable/emoji_ivres_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f34.png rename to emojis/src/main/res/drawable/emoji_ivres_f34.png diff --git a/app/src/main/res/drawable/emoji_ivres_f35.png b/emojis/src/main/res/drawable/emoji_ivres_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f35.png rename to emojis/src/main/res/drawable/emoji_ivres_f35.png diff --git a/app/src/main/res/drawable/emoji_ivres_f36.png b/emojis/src/main/res/drawable/emoji_ivres_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f36.png rename to emojis/src/main/res/drawable/emoji_ivres_f36.png diff --git a/app/src/main/res/drawable/emoji_ivres_f37.png b/emojis/src/main/res/drawable/emoji_ivres_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f37.png rename to emojis/src/main/res/drawable/emoji_ivres_f37.png diff --git a/app/src/main/res/drawable/emoji_ivres_f38.png b/emojis/src/main/res/drawable/emoji_ivres_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f38.png rename to emojis/src/main/res/drawable/emoji_ivres_f38.png diff --git a/app/src/main/res/drawable/emoji_ivres_f39.png b/emojis/src/main/res/drawable/emoji_ivres_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f39.png rename to emojis/src/main/res/drawable/emoji_ivres_f39.png diff --git a/app/src/main/res/drawable/emoji_ivres_f4.png b/emojis/src/main/res/drawable/emoji_ivres_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f4.png rename to emojis/src/main/res/drawable/emoji_ivres_f4.png diff --git a/app/src/main/res/drawable/emoji_ivres_f40.png b/emojis/src/main/res/drawable/emoji_ivres_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f40.png rename to emojis/src/main/res/drawable/emoji_ivres_f40.png diff --git a/app/src/main/res/drawable/emoji_ivres_f41.png b/emojis/src/main/res/drawable/emoji_ivres_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f41.png rename to emojis/src/main/res/drawable/emoji_ivres_f41.png diff --git a/app/src/main/res/drawable/emoji_ivres_f42.png b/emojis/src/main/res/drawable/emoji_ivres_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f42.png rename to emojis/src/main/res/drawable/emoji_ivres_f42.png diff --git a/app/src/main/res/drawable/emoji_ivres_f43.png b/emojis/src/main/res/drawable/emoji_ivres_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f43.png rename to emojis/src/main/res/drawable/emoji_ivres_f43.png diff --git a/app/src/main/res/drawable/emoji_ivres_f44.png b/emojis/src/main/res/drawable/emoji_ivres_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f44.png rename to emojis/src/main/res/drawable/emoji_ivres_f44.png diff --git a/app/src/main/res/drawable/emoji_ivres_f45.png b/emojis/src/main/res/drawable/emoji_ivres_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f45.png rename to emojis/src/main/res/drawable/emoji_ivres_f45.png diff --git a/app/src/main/res/drawable/emoji_ivres_f46.png b/emojis/src/main/res/drawable/emoji_ivres_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f46.png rename to emojis/src/main/res/drawable/emoji_ivres_f46.png diff --git a/app/src/main/res/drawable/emoji_ivres_f47.png b/emojis/src/main/res/drawable/emoji_ivres_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f47.png rename to emojis/src/main/res/drawable/emoji_ivres_f47.png diff --git a/app/src/main/res/drawable/emoji_ivres_f48.png b/emojis/src/main/res/drawable/emoji_ivres_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f48.png rename to emojis/src/main/res/drawable/emoji_ivres_f48.png diff --git a/app/src/main/res/drawable/emoji_ivres_f5.png b/emojis/src/main/res/drawable/emoji_ivres_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f5.png rename to emojis/src/main/res/drawable/emoji_ivres_f5.png diff --git a/app/src/main/res/drawable/emoji_ivres_f6.png b/emojis/src/main/res/drawable/emoji_ivres_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f6.png rename to emojis/src/main/res/drawable/emoji_ivres_f6.png diff --git a/app/src/main/res/drawable/emoji_ivres_f7.png b/emojis/src/main/res/drawable/emoji_ivres_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f7.png rename to emojis/src/main/res/drawable/emoji_ivres_f7.png diff --git a/app/src/main/res/drawable/emoji_ivres_f8.png b/emojis/src/main/res/drawable/emoji_ivres_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f8.png rename to emojis/src/main/res/drawable/emoji_ivres_f8.png diff --git a/app/src/main/res/drawable/emoji_ivres_f9.png b/emojis/src/main/res/drawable/emoji_ivres_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_ivres_f9.png rename to emojis/src/main/res/drawable/emoji_ivres_f9.png diff --git a/app/src/main/res/drawable/emoji_jerk.xml b/emojis/src/main/res/drawable/emoji_jerk.xml similarity index 100% rename from app/src/main/res/drawable/emoji_jerk.xml rename to emojis/src/main/res/drawable/emoji_jerk.xml diff --git a/app/src/main/res/drawable/emoji_jerk_f0.png b/emojis/src/main/res/drawable/emoji_jerk_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_jerk_f0.png rename to emojis/src/main/res/drawable/emoji_jerk_f0.png diff --git a/app/src/main/res/drawable/emoji_jerk_f1.png b/emojis/src/main/res/drawable/emoji_jerk_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_jerk_f1.png rename to emojis/src/main/res/drawable/emoji_jerk_f1.png diff --git a/app/src/main/res/drawable/emoji_kaloe.xml b/emojis/src/main/res/drawable/emoji_kaloe.xml similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe.xml rename to emojis/src/main/res/drawable/emoji_kaloe.xml diff --git a/app/src/main/res/drawable/emoji_kaloe_f0.png b/emojis/src/main/res/drawable/emoji_kaloe_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f0.png rename to emojis/src/main/res/drawable/emoji_kaloe_f0.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f1.png b/emojis/src/main/res/drawable/emoji_kaloe_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f1.png rename to emojis/src/main/res/drawable/emoji_kaloe_f1.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f2.png b/emojis/src/main/res/drawable/emoji_kaloe_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f2.png rename to emojis/src/main/res/drawable/emoji_kaloe_f2.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f3.png b/emojis/src/main/res/drawable/emoji_kaloe_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f3.png rename to emojis/src/main/res/drawable/emoji_kaloe_f3.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f4.png b/emojis/src/main/res/drawable/emoji_kaloe_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f4.png rename to emojis/src/main/res/drawable/emoji_kaloe_f4.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f5.png b/emojis/src/main/res/drawable/emoji_kaloe_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f5.png rename to emojis/src/main/res/drawable/emoji_kaloe_f5.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f6.png b/emojis/src/main/res/drawable/emoji_kaloe_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f6.png rename to emojis/src/main/res/drawable/emoji_kaloe_f6.png diff --git a/app/src/main/res/drawable/emoji_kaloe_f7.png b/emojis/src/main/res/drawable/emoji_kaloe_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_kaloe_f7.png rename to emojis/src/main/res/drawable/emoji_kaloe_f7.png diff --git a/app/src/main/res/drawable/emoji_kiss.xml b/emojis/src/main/res/drawable/emoji_kiss.xml similarity index 100% rename from app/src/main/res/drawable/emoji_kiss.xml rename to emojis/src/main/res/drawable/emoji_kiss.xml diff --git a/app/src/main/res/drawable/emoji_kiss_f0.png b/emojis/src/main/res/drawable/emoji_kiss_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_kiss_f0.png rename to emojis/src/main/res/drawable/emoji_kiss_f0.png diff --git a/app/src/main/res/drawable/emoji_kiss_f1.png b/emojis/src/main/res/drawable/emoji_kiss_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_kiss_f1.png rename to emojis/src/main/res/drawable/emoji_kiss_f1.png diff --git a/app/src/main/res/drawable/emoji_kiss_f2.png b/emojis/src/main/res/drawable/emoji_kiss_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_kiss_f2.png rename to emojis/src/main/res/drawable/emoji_kiss_f2.png diff --git a/app/src/main/res/drawable/emoji_kiss_f3.png b/emojis/src/main/res/drawable/emoji_kiss_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_kiss_f3.png rename to emojis/src/main/res/drawable/emoji_kiss_f3.png diff --git a/app/src/main/res/drawable/emoji_knuppel.xml b/emojis/src/main/res/drawable/emoji_knuppel.xml similarity index 100% rename from app/src/main/res/drawable/emoji_knuppel.xml rename to emojis/src/main/res/drawable/emoji_knuppel.xml diff --git a/app/src/main/res/drawable/emoji_knuppel_f0.png b/emojis/src/main/res/drawable/emoji_knuppel_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_knuppel_f0.png rename to emojis/src/main/res/drawable/emoji_knuppel_f0.png diff --git a/app/src/main/res/drawable/emoji_knuppel_f1.png b/emojis/src/main/res/drawable/emoji_knuppel_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_knuppel_f1.png rename to emojis/src/main/res/drawable/emoji_knuppel_f1.png diff --git a/app/src/main/res/drawable/emoji_knuppel_f2.png b/emojis/src/main/res/drawable/emoji_knuppel_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_knuppel_f2.png rename to emojis/src/main/res/drawable/emoji_knuppel_f2.png diff --git a/app/src/main/res/drawable/emoji_knuppel_f3.png b/emojis/src/main/res/drawable/emoji_knuppel_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_knuppel_f3.png rename to emojis/src/main/res/drawable/emoji_knuppel_f3.png diff --git a/app/src/main/res/drawable/emoji_kremala.xml b/emojis/src/main/res/drawable/emoji_kremala.xml similarity index 100% rename from app/src/main/res/drawable/emoji_kremala.xml rename to emojis/src/main/res/drawable/emoji_kremala.xml diff --git a/app/src/main/res/drawable/emoji_kremala_f0.png b/emojis/src/main/res/drawable/emoji_kremala_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f0.png rename to emojis/src/main/res/drawable/emoji_kremala_f0.png diff --git a/app/src/main/res/drawable/emoji_kremala_f1.png b/emojis/src/main/res/drawable/emoji_kremala_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f1.png rename to emojis/src/main/res/drawable/emoji_kremala_f1.png diff --git a/app/src/main/res/drawable/emoji_kremala_f2.png b/emojis/src/main/res/drawable/emoji_kremala_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f2.png rename to emojis/src/main/res/drawable/emoji_kremala_f2.png diff --git a/app/src/main/res/drawable/emoji_kremala_f3.png b/emojis/src/main/res/drawable/emoji_kremala_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f3.png rename to emojis/src/main/res/drawable/emoji_kremala_f3.png diff --git a/app/src/main/res/drawable/emoji_kremala_f4.png b/emojis/src/main/res/drawable/emoji_kremala_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f4.png rename to emojis/src/main/res/drawable/emoji_kremala_f4.png diff --git a/app/src/main/res/drawable/emoji_kremala_f5.png b/emojis/src/main/res/drawable/emoji_kremala_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f5.png rename to emojis/src/main/res/drawable/emoji_kremala_f5.png diff --git a/app/src/main/res/drawable/emoji_kremala_f6.png b/emojis/src/main/res/drawable/emoji_kremala_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f6.png rename to emojis/src/main/res/drawable/emoji_kremala_f6.png diff --git a/app/src/main/res/drawable/emoji_kremala_f7.png b/emojis/src/main/res/drawable/emoji_kremala_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_kremala_f7.png rename to emojis/src/main/res/drawable/emoji_kremala_f7.png diff --git a/app/src/main/res/drawable/emoji_lips_sealed.xml b/emojis/src/main/res/drawable/emoji_lips_sealed.xml similarity index 100% rename from app/src/main/res/drawable/emoji_lips_sealed.xml rename to emojis/src/main/res/drawable/emoji_lips_sealed.xml diff --git a/app/src/main/res/drawable/emoji_lips_sealed_f0.png b/emojis/src/main/res/drawable/emoji_lips_sealed_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_lips_sealed_f0.png rename to emojis/src/main/res/drawable/emoji_lips_sealed_f0.png diff --git a/app/src/main/res/drawable/emoji_lipsrsealed.xml b/emojis/src/main/res/drawable/emoji_lipsrsealed.xml similarity index 100% rename from app/src/main/res/drawable/emoji_lipsrsealed.xml rename to emojis/src/main/res/drawable/emoji_lipsrsealed.xml diff --git a/app/src/main/res/drawable/emoji_lipsrsealed_f0.png b/emojis/src/main/res/drawable/emoji_lipsrsealed_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_lipsrsealed_f0.png rename to emojis/src/main/res/drawable/emoji_lipsrsealed_f0.png diff --git a/app/src/main/res/drawable/emoji_lipsrsealed_f1.png b/emojis/src/main/res/drawable/emoji_lipsrsealed_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_lipsrsealed_f1.png rename to emojis/src/main/res/drawable/emoji_lipsrsealed_f1.png diff --git a/app/src/main/res/drawable/emoji_locked.xml b/emojis/src/main/res/drawable/emoji_locked.xml similarity index 100% rename from app/src/main/res/drawable/emoji_locked.xml rename to emojis/src/main/res/drawable/emoji_locked.xml diff --git a/app/src/main/res/drawable/emoji_locked_f0.png b/emojis/src/main/res/drawable/emoji_locked_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f0.png rename to emojis/src/main/res/drawable/emoji_locked_f0.png diff --git a/app/src/main/res/drawable/emoji_locked_f1.png b/emojis/src/main/res/drawable/emoji_locked_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f1.png rename to emojis/src/main/res/drawable/emoji_locked_f1.png diff --git a/app/src/main/res/drawable/emoji_locked_f2.png b/emojis/src/main/res/drawable/emoji_locked_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f2.png rename to emojis/src/main/res/drawable/emoji_locked_f2.png diff --git a/app/src/main/res/drawable/emoji_locked_f3.png b/emojis/src/main/res/drawable/emoji_locked_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f3.png rename to emojis/src/main/res/drawable/emoji_locked_f3.png diff --git a/app/src/main/res/drawable/emoji_locked_f4.png b/emojis/src/main/res/drawable/emoji_locked_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f4.png rename to emojis/src/main/res/drawable/emoji_locked_f4.png diff --git a/app/src/main/res/drawable/emoji_locked_f5.png b/emojis/src/main/res/drawable/emoji_locked_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f5.png rename to emojis/src/main/res/drawable/emoji_locked_f5.png diff --git a/app/src/main/res/drawable/emoji_locked_f6.png b/emojis/src/main/res/drawable/emoji_locked_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f6.png rename to emojis/src/main/res/drawable/emoji_locked_f6.png diff --git a/app/src/main/res/drawable/emoji_locked_f7.png b/emojis/src/main/res/drawable/emoji_locked_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_locked_f7.png rename to emojis/src/main/res/drawable/emoji_locked_f7.png diff --git a/app/src/main/res/drawable/emoji_lol.jpg b/emojis/src/main/res/drawable/emoji_lol.jpg similarity index 100% rename from app/src/main/res/drawable/emoji_lol.jpg rename to emojis/src/main/res/drawable/emoji_lol.jpg diff --git a/app/src/main/res/drawable/emoji_love.jpg b/emojis/src/main/res/drawable/emoji_love.jpg similarity index 100% rename from app/src/main/res/drawable/emoji_love.jpg rename to emojis/src/main/res/drawable/emoji_love.jpg diff --git a/app/src/main/res/drawable/emoji_lypi.xml b/emojis/src/main/res/drawable/emoji_lypi.xml similarity index 100% rename from app/src/main/res/drawable/emoji_lypi.xml rename to emojis/src/main/res/drawable/emoji_lypi.xml diff --git a/app/src/main/res/drawable/emoji_lypi_f0.png b/emojis/src/main/res/drawable/emoji_lypi_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f0.png rename to emojis/src/main/res/drawable/emoji_lypi_f0.png diff --git a/app/src/main/res/drawable/emoji_lypi_f1.png b/emojis/src/main/res/drawable/emoji_lypi_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f1.png rename to emojis/src/main/res/drawable/emoji_lypi_f1.png diff --git a/app/src/main/res/drawable/emoji_lypi_f10.png b/emojis/src/main/res/drawable/emoji_lypi_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f10.png rename to emojis/src/main/res/drawable/emoji_lypi_f10.png diff --git a/app/src/main/res/drawable/emoji_lypi_f11.png b/emojis/src/main/res/drawable/emoji_lypi_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f11.png rename to emojis/src/main/res/drawable/emoji_lypi_f11.png diff --git a/app/src/main/res/drawable/emoji_lypi_f12.png b/emojis/src/main/res/drawable/emoji_lypi_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f12.png rename to emojis/src/main/res/drawable/emoji_lypi_f12.png diff --git a/app/src/main/res/drawable/emoji_lypi_f13.png b/emojis/src/main/res/drawable/emoji_lypi_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f13.png rename to emojis/src/main/res/drawable/emoji_lypi_f13.png diff --git a/app/src/main/res/drawable/emoji_lypi_f14.png b/emojis/src/main/res/drawable/emoji_lypi_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f14.png rename to emojis/src/main/res/drawable/emoji_lypi_f14.png diff --git a/app/src/main/res/drawable/emoji_lypi_f15.png b/emojis/src/main/res/drawable/emoji_lypi_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f15.png rename to emojis/src/main/res/drawable/emoji_lypi_f15.png diff --git a/app/src/main/res/drawable/emoji_lypi_f16.png b/emojis/src/main/res/drawable/emoji_lypi_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f16.png rename to emojis/src/main/res/drawable/emoji_lypi_f16.png diff --git a/app/src/main/res/drawable/emoji_lypi_f17.png b/emojis/src/main/res/drawable/emoji_lypi_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f17.png rename to emojis/src/main/res/drawable/emoji_lypi_f17.png diff --git a/app/src/main/res/drawable/emoji_lypi_f18.png b/emojis/src/main/res/drawable/emoji_lypi_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f18.png rename to emojis/src/main/res/drawable/emoji_lypi_f18.png diff --git a/app/src/main/res/drawable/emoji_lypi_f19.png b/emojis/src/main/res/drawable/emoji_lypi_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f19.png rename to emojis/src/main/res/drawable/emoji_lypi_f19.png diff --git a/app/src/main/res/drawable/emoji_lypi_f2.png b/emojis/src/main/res/drawable/emoji_lypi_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f2.png rename to emojis/src/main/res/drawable/emoji_lypi_f2.png diff --git a/app/src/main/res/drawable/emoji_lypi_f20.png b/emojis/src/main/res/drawable/emoji_lypi_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f20.png rename to emojis/src/main/res/drawable/emoji_lypi_f20.png diff --git a/app/src/main/res/drawable/emoji_lypi_f21.png b/emojis/src/main/res/drawable/emoji_lypi_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f21.png rename to emojis/src/main/res/drawable/emoji_lypi_f21.png diff --git a/app/src/main/res/drawable/emoji_lypi_f22.png b/emojis/src/main/res/drawable/emoji_lypi_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f22.png rename to emojis/src/main/res/drawable/emoji_lypi_f22.png diff --git a/app/src/main/res/drawable/emoji_lypi_f23.png b/emojis/src/main/res/drawable/emoji_lypi_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f23.png rename to emojis/src/main/res/drawable/emoji_lypi_f23.png diff --git a/app/src/main/res/drawable/emoji_lypi_f24.png b/emojis/src/main/res/drawable/emoji_lypi_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f24.png rename to emojis/src/main/res/drawable/emoji_lypi_f24.png diff --git a/app/src/main/res/drawable/emoji_lypi_f25.png b/emojis/src/main/res/drawable/emoji_lypi_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f25.png rename to emojis/src/main/res/drawable/emoji_lypi_f25.png diff --git a/app/src/main/res/drawable/emoji_lypi_f26.png b/emojis/src/main/res/drawable/emoji_lypi_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f26.png rename to emojis/src/main/res/drawable/emoji_lypi_f26.png diff --git a/app/src/main/res/drawable/emoji_lypi_f27.png b/emojis/src/main/res/drawable/emoji_lypi_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f27.png rename to emojis/src/main/res/drawable/emoji_lypi_f27.png diff --git a/app/src/main/res/drawable/emoji_lypi_f28.png b/emojis/src/main/res/drawable/emoji_lypi_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f28.png rename to emojis/src/main/res/drawable/emoji_lypi_f28.png diff --git a/app/src/main/res/drawable/emoji_lypi_f29.png b/emojis/src/main/res/drawable/emoji_lypi_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f29.png rename to emojis/src/main/res/drawable/emoji_lypi_f29.png diff --git a/app/src/main/res/drawable/emoji_lypi_f3.png b/emojis/src/main/res/drawable/emoji_lypi_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f3.png rename to emojis/src/main/res/drawable/emoji_lypi_f3.png diff --git a/app/src/main/res/drawable/emoji_lypi_f30.png b/emojis/src/main/res/drawable/emoji_lypi_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f30.png rename to emojis/src/main/res/drawable/emoji_lypi_f30.png diff --git a/app/src/main/res/drawable/emoji_lypi_f31.png b/emojis/src/main/res/drawable/emoji_lypi_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f31.png rename to emojis/src/main/res/drawable/emoji_lypi_f31.png diff --git a/app/src/main/res/drawable/emoji_lypi_f32.png b/emojis/src/main/res/drawable/emoji_lypi_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f32.png rename to emojis/src/main/res/drawable/emoji_lypi_f32.png diff --git a/app/src/main/res/drawable/emoji_lypi_f33.png b/emojis/src/main/res/drawable/emoji_lypi_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f33.png rename to emojis/src/main/res/drawable/emoji_lypi_f33.png diff --git a/app/src/main/res/drawable/emoji_lypi_f34.png b/emojis/src/main/res/drawable/emoji_lypi_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f34.png rename to emojis/src/main/res/drawable/emoji_lypi_f34.png diff --git a/app/src/main/res/drawable/emoji_lypi_f35.png b/emojis/src/main/res/drawable/emoji_lypi_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f35.png rename to emojis/src/main/res/drawable/emoji_lypi_f35.png diff --git a/app/src/main/res/drawable/emoji_lypi_f36.png b/emojis/src/main/res/drawable/emoji_lypi_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f36.png rename to emojis/src/main/res/drawable/emoji_lypi_f36.png diff --git a/app/src/main/res/drawable/emoji_lypi_f37.png b/emojis/src/main/res/drawable/emoji_lypi_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f37.png rename to emojis/src/main/res/drawable/emoji_lypi_f37.png diff --git a/app/src/main/res/drawable/emoji_lypi_f38.png b/emojis/src/main/res/drawable/emoji_lypi_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f38.png rename to emojis/src/main/res/drawable/emoji_lypi_f38.png diff --git a/app/src/main/res/drawable/emoji_lypi_f39.png b/emojis/src/main/res/drawable/emoji_lypi_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f39.png rename to emojis/src/main/res/drawable/emoji_lypi_f39.png diff --git a/app/src/main/res/drawable/emoji_lypi_f4.png b/emojis/src/main/res/drawable/emoji_lypi_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f4.png rename to emojis/src/main/res/drawable/emoji_lypi_f4.png diff --git a/app/src/main/res/drawable/emoji_lypi_f40.png b/emojis/src/main/res/drawable/emoji_lypi_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f40.png rename to emojis/src/main/res/drawable/emoji_lypi_f40.png diff --git a/app/src/main/res/drawable/emoji_lypi_f41.png b/emojis/src/main/res/drawable/emoji_lypi_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f41.png rename to emojis/src/main/res/drawable/emoji_lypi_f41.png diff --git a/app/src/main/res/drawable/emoji_lypi_f42.png b/emojis/src/main/res/drawable/emoji_lypi_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f42.png rename to emojis/src/main/res/drawable/emoji_lypi_f42.png diff --git a/app/src/main/res/drawable/emoji_lypi_f43.png b/emojis/src/main/res/drawable/emoji_lypi_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f43.png rename to emojis/src/main/res/drawable/emoji_lypi_f43.png diff --git a/app/src/main/res/drawable/emoji_lypi_f44.png b/emojis/src/main/res/drawable/emoji_lypi_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f44.png rename to emojis/src/main/res/drawable/emoji_lypi_f44.png diff --git a/app/src/main/res/drawable/emoji_lypi_f45.png b/emojis/src/main/res/drawable/emoji_lypi_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f45.png rename to emojis/src/main/res/drawable/emoji_lypi_f45.png diff --git a/app/src/main/res/drawable/emoji_lypi_f46.png b/emojis/src/main/res/drawable/emoji_lypi_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f46.png rename to emojis/src/main/res/drawable/emoji_lypi_f46.png diff --git a/app/src/main/res/drawable/emoji_lypi_f47.png b/emojis/src/main/res/drawable/emoji_lypi_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f47.png rename to emojis/src/main/res/drawable/emoji_lypi_f47.png diff --git a/app/src/main/res/drawable/emoji_lypi_f48.png b/emojis/src/main/res/drawable/emoji_lypi_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f48.png rename to emojis/src/main/res/drawable/emoji_lypi_f48.png diff --git a/app/src/main/res/drawable/emoji_lypi_f49.png b/emojis/src/main/res/drawable/emoji_lypi_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f49.png rename to emojis/src/main/res/drawable/emoji_lypi_f49.png diff --git a/app/src/main/res/drawable/emoji_lypi_f5.png b/emojis/src/main/res/drawable/emoji_lypi_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f5.png rename to emojis/src/main/res/drawable/emoji_lypi_f5.png diff --git a/app/src/main/res/drawable/emoji_lypi_f50.png b/emojis/src/main/res/drawable/emoji_lypi_f50.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f50.png rename to emojis/src/main/res/drawable/emoji_lypi_f50.png diff --git a/app/src/main/res/drawable/emoji_lypi_f51.png b/emojis/src/main/res/drawable/emoji_lypi_f51.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f51.png rename to emojis/src/main/res/drawable/emoji_lypi_f51.png diff --git a/app/src/main/res/drawable/emoji_lypi_f52.png b/emojis/src/main/res/drawable/emoji_lypi_f52.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f52.png rename to emojis/src/main/res/drawable/emoji_lypi_f52.png diff --git a/app/src/main/res/drawable/emoji_lypi_f53.png b/emojis/src/main/res/drawable/emoji_lypi_f53.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f53.png rename to emojis/src/main/res/drawable/emoji_lypi_f53.png diff --git a/app/src/main/res/drawable/emoji_lypi_f54.png b/emojis/src/main/res/drawable/emoji_lypi_f54.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f54.png rename to emojis/src/main/res/drawable/emoji_lypi_f54.png diff --git a/app/src/main/res/drawable/emoji_lypi_f55.png b/emojis/src/main/res/drawable/emoji_lypi_f55.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f55.png rename to emojis/src/main/res/drawable/emoji_lypi_f55.png diff --git a/app/src/main/res/drawable/emoji_lypi_f56.png b/emojis/src/main/res/drawable/emoji_lypi_f56.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f56.png rename to emojis/src/main/res/drawable/emoji_lypi_f56.png diff --git a/app/src/main/res/drawable/emoji_lypi_f57.png b/emojis/src/main/res/drawable/emoji_lypi_f57.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f57.png rename to emojis/src/main/res/drawable/emoji_lypi_f57.png diff --git a/app/src/main/res/drawable/emoji_lypi_f58.png b/emojis/src/main/res/drawable/emoji_lypi_f58.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f58.png rename to emojis/src/main/res/drawable/emoji_lypi_f58.png diff --git a/app/src/main/res/drawable/emoji_lypi_f59.png b/emojis/src/main/res/drawable/emoji_lypi_f59.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f59.png rename to emojis/src/main/res/drawable/emoji_lypi_f59.png diff --git a/app/src/main/res/drawable/emoji_lypi_f6.png b/emojis/src/main/res/drawable/emoji_lypi_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f6.png rename to emojis/src/main/res/drawable/emoji_lypi_f6.png diff --git a/app/src/main/res/drawable/emoji_lypi_f7.png b/emojis/src/main/res/drawable/emoji_lypi_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f7.png rename to emojis/src/main/res/drawable/emoji_lypi_f7.png diff --git a/app/src/main/res/drawable/emoji_lypi_f8.png b/emojis/src/main/res/drawable/emoji_lypi_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f8.png rename to emojis/src/main/res/drawable/emoji_lypi_f8.png diff --git a/app/src/main/res/drawable/emoji_lypi_f9.png b/emojis/src/main/res/drawable/emoji_lypi_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_lypi_f9.png rename to emojis/src/main/res/drawable/emoji_lypi_f9.png diff --git a/app/src/main/res/drawable/emoji_mad.jpg b/emojis/src/main/res/drawable/emoji_mad.jpg similarity index 100% rename from app/src/main/res/drawable/emoji_mad.jpg rename to emojis/src/main/res/drawable/emoji_mad.jpg diff --git a/app/src/main/res/drawable/emoji_megashok1wq.xml b/emojis/src/main/res/drawable/emoji_megashok1wq.xml similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq.xml rename to emojis/src/main/res/drawable/emoji_megashok1wq.xml diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f0.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f0.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f0.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f1.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f1.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f1.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f10.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f10.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f10.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f11.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f11.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f11.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f12.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f12.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f12.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f13.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f13.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f13.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f14.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f14.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f14.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f15.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f15.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f15.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f16.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f16.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f16.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f17.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f17.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f17.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f18.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f18.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f18.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f19.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f19.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f19.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f2.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f2.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f2.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f20.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f20.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f20.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f21.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f21.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f21.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f22.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f22.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f22.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f23.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f23.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f23.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f24.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f24.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f24.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f25.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f25.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f25.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f26.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f26.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f26.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f27.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f27.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f27.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f28.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f28.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f28.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f29.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f29.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f29.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f3.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f3.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f3.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f30.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f30.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f30.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f31.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f31.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f31.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f32.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f32.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f32.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f33.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f33.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f33.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f34.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f34.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f34.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f35.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f35.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f35.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f36.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f36.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f36.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f37.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f37.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f37.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f38.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f38.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f38.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f39.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f39.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f39.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f4.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f4.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f4.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f40.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f40.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f40.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f41.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f41.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f41.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f42.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f42.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f42.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f43.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f43.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f43.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f44.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f44.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f44.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f45.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f45.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f45.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f46.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f46.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f46.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f47.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f47.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f47.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f48.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f48.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f48.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f49.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f49.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f49.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f5.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f5.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f5.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f6.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f6.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f6.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f7.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f7.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f7.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f8.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f8.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f8.png diff --git a/app/src/main/res/drawable/emoji_megashok1wq_f9.png b/emojis/src/main/res/drawable/emoji_megashok1wq_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_megashok1wq_f9.png rename to emojis/src/main/res/drawable/emoji_megashok1wq_f9.png diff --git a/app/src/main/res/drawable/emoji_monster.png b/emojis/src/main/res/drawable/emoji_monster.png similarity index 100% rename from app/src/main/res/drawable/emoji_monster.png rename to emojis/src/main/res/drawable/emoji_monster.png diff --git a/app/src/main/res/drawable/emoji_moon.xml b/emojis/src/main/res/drawable/emoji_moon.xml similarity index 100% rename from app/src/main/res/drawable/emoji_moon.xml rename to emojis/src/main/res/drawable/emoji_moon.xml diff --git a/app/src/main/res/drawable/emoji_moon_f0.png b/emojis/src/main/res/drawable/emoji_moon_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f0.png rename to emojis/src/main/res/drawable/emoji_moon_f0.png diff --git a/app/src/main/res/drawable/emoji_moon_f1.png b/emojis/src/main/res/drawable/emoji_moon_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f1.png rename to emojis/src/main/res/drawable/emoji_moon_f1.png diff --git a/app/src/main/res/drawable/emoji_moon_f10.png b/emojis/src/main/res/drawable/emoji_moon_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f10.png rename to emojis/src/main/res/drawable/emoji_moon_f10.png diff --git a/app/src/main/res/drawable/emoji_moon_f11.png b/emojis/src/main/res/drawable/emoji_moon_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f11.png rename to emojis/src/main/res/drawable/emoji_moon_f11.png diff --git a/app/src/main/res/drawable/emoji_moon_f12.png b/emojis/src/main/res/drawable/emoji_moon_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f12.png rename to emojis/src/main/res/drawable/emoji_moon_f12.png diff --git a/app/src/main/res/drawable/emoji_moon_f13.png b/emojis/src/main/res/drawable/emoji_moon_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f13.png rename to emojis/src/main/res/drawable/emoji_moon_f13.png diff --git a/app/src/main/res/drawable/emoji_moon_f14.png b/emojis/src/main/res/drawable/emoji_moon_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f14.png rename to emojis/src/main/res/drawable/emoji_moon_f14.png diff --git a/app/src/main/res/drawable/emoji_moon_f15.png b/emojis/src/main/res/drawable/emoji_moon_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f15.png rename to emojis/src/main/res/drawable/emoji_moon_f15.png diff --git a/app/src/main/res/drawable/emoji_moon_f16.png b/emojis/src/main/res/drawable/emoji_moon_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f16.png rename to emojis/src/main/res/drawable/emoji_moon_f16.png diff --git a/app/src/main/res/drawable/emoji_moon_f17.png b/emojis/src/main/res/drawable/emoji_moon_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f17.png rename to emojis/src/main/res/drawable/emoji_moon_f17.png diff --git a/app/src/main/res/drawable/emoji_moon_f18.png b/emojis/src/main/res/drawable/emoji_moon_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f18.png rename to emojis/src/main/res/drawable/emoji_moon_f18.png diff --git a/app/src/main/res/drawable/emoji_moon_f19.png b/emojis/src/main/res/drawable/emoji_moon_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f19.png rename to emojis/src/main/res/drawable/emoji_moon_f19.png diff --git a/app/src/main/res/drawable/emoji_moon_f2.png b/emojis/src/main/res/drawable/emoji_moon_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f2.png rename to emojis/src/main/res/drawable/emoji_moon_f2.png diff --git a/app/src/main/res/drawable/emoji_moon_f20.png b/emojis/src/main/res/drawable/emoji_moon_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f20.png rename to emojis/src/main/res/drawable/emoji_moon_f20.png diff --git a/app/src/main/res/drawable/emoji_moon_f21.png b/emojis/src/main/res/drawable/emoji_moon_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f21.png rename to emojis/src/main/res/drawable/emoji_moon_f21.png diff --git a/app/src/main/res/drawable/emoji_moon_f22.png b/emojis/src/main/res/drawable/emoji_moon_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f22.png rename to emojis/src/main/res/drawable/emoji_moon_f22.png diff --git a/app/src/main/res/drawable/emoji_moon_f3.png b/emojis/src/main/res/drawable/emoji_moon_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f3.png rename to emojis/src/main/res/drawable/emoji_moon_f3.png diff --git a/app/src/main/res/drawable/emoji_moon_f4.png b/emojis/src/main/res/drawable/emoji_moon_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f4.png rename to emojis/src/main/res/drawable/emoji_moon_f4.png diff --git a/app/src/main/res/drawable/emoji_moon_f5.png b/emojis/src/main/res/drawable/emoji_moon_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f5.png rename to emojis/src/main/res/drawable/emoji_moon_f5.png diff --git a/app/src/main/res/drawable/emoji_moon_f6.png b/emojis/src/main/res/drawable/emoji_moon_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f6.png rename to emojis/src/main/res/drawable/emoji_moon_f6.png diff --git a/app/src/main/res/drawable/emoji_moon_f7.png b/emojis/src/main/res/drawable/emoji_moon_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f7.png rename to emojis/src/main/res/drawable/emoji_moon_f7.png diff --git a/app/src/main/res/drawable/emoji_moon_f8.png b/emojis/src/main/res/drawable/emoji_moon_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f8.png rename to emojis/src/main/res/drawable/emoji_moon_f8.png diff --git a/app/src/main/res/drawable/emoji_moon_f9.png b/emojis/src/main/res/drawable/emoji_moon_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_moon_f9.png rename to emojis/src/main/res/drawable/emoji_moon_f9.png diff --git a/app/src/main/res/drawable/emoji_mopping.xml b/emojis/src/main/res/drawable/emoji_mopping.xml similarity index 100% rename from app/src/main/res/drawable/emoji_mopping.xml rename to emojis/src/main/res/drawable/emoji_mopping.xml diff --git a/app/src/main/res/drawable/emoji_mopping_f0.png b/emojis/src/main/res/drawable/emoji_mopping_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f0.png rename to emojis/src/main/res/drawable/emoji_mopping_f0.png diff --git a/app/src/main/res/drawable/emoji_mopping_f1.png b/emojis/src/main/res/drawable/emoji_mopping_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f1.png rename to emojis/src/main/res/drawable/emoji_mopping_f1.png diff --git a/app/src/main/res/drawable/emoji_mopping_f2.png b/emojis/src/main/res/drawable/emoji_mopping_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f2.png rename to emojis/src/main/res/drawable/emoji_mopping_f2.png diff --git a/app/src/main/res/drawable/emoji_mopping_f3.png b/emojis/src/main/res/drawable/emoji_mopping_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f3.png rename to emojis/src/main/res/drawable/emoji_mopping_f3.png diff --git a/app/src/main/res/drawable/emoji_mopping_f4.png b/emojis/src/main/res/drawable/emoji_mopping_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f4.png rename to emojis/src/main/res/drawable/emoji_mopping_f4.png diff --git a/app/src/main/res/drawable/emoji_mopping_f5.png b/emojis/src/main/res/drawable/emoji_mopping_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f5.png rename to emojis/src/main/res/drawable/emoji_mopping_f5.png diff --git a/app/src/main/res/drawable/emoji_mopping_f6.png b/emojis/src/main/res/drawable/emoji_mopping_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_mopping_f6.png rename to emojis/src/main/res/drawable/emoji_mopping_f6.png diff --git a/app/src/main/res/drawable/emoji_mountza.xml b/emojis/src/main/res/drawable/emoji_mountza.xml similarity index 100% rename from app/src/main/res/drawable/emoji_mountza.xml rename to emojis/src/main/res/drawable/emoji_mountza.xml diff --git a/app/src/main/res/drawable/emoji_mountza_f0.png b/emojis/src/main/res/drawable/emoji_mountza_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_mountza_f0.png rename to emojis/src/main/res/drawable/emoji_mountza_f0.png diff --git a/app/src/main/res/drawable/emoji_music.xml b/emojis/src/main/res/drawable/emoji_music.xml similarity index 100% rename from app/src/main/res/drawable/emoji_music.xml rename to emojis/src/main/res/drawable/emoji_music.xml diff --git a/app/src/main/res/drawable/emoji_music_f0.png b/emojis/src/main/res/drawable/emoji_music_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_music_f0.png rename to emojis/src/main/res/drawable/emoji_music_f0.png diff --git a/app/src/main/res/drawable/emoji_nista.xml b/emojis/src/main/res/drawable/emoji_nista.xml similarity index 100% rename from app/src/main/res/drawable/emoji_nista.xml rename to emojis/src/main/res/drawable/emoji_nista.xml diff --git a/app/src/main/res/drawable/emoji_nista_f0.png b/emojis/src/main/res/drawable/emoji_nista_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f0.png rename to emojis/src/main/res/drawable/emoji_nista_f0.png diff --git a/app/src/main/res/drawable/emoji_nista_f1.png b/emojis/src/main/res/drawable/emoji_nista_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f1.png rename to emojis/src/main/res/drawable/emoji_nista_f1.png diff --git a/app/src/main/res/drawable/emoji_nista_f10.png b/emojis/src/main/res/drawable/emoji_nista_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f10.png rename to emojis/src/main/res/drawable/emoji_nista_f10.png diff --git a/app/src/main/res/drawable/emoji_nista_f11.png b/emojis/src/main/res/drawable/emoji_nista_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f11.png rename to emojis/src/main/res/drawable/emoji_nista_f11.png diff --git a/app/src/main/res/drawable/emoji_nista_f12.png b/emojis/src/main/res/drawable/emoji_nista_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f12.png rename to emojis/src/main/res/drawable/emoji_nista_f12.png diff --git a/app/src/main/res/drawable/emoji_nista_f13.png b/emojis/src/main/res/drawable/emoji_nista_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f13.png rename to emojis/src/main/res/drawable/emoji_nista_f13.png diff --git a/app/src/main/res/drawable/emoji_nista_f14.png b/emojis/src/main/res/drawable/emoji_nista_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f14.png rename to emojis/src/main/res/drawable/emoji_nista_f14.png diff --git a/app/src/main/res/drawable/emoji_nista_f15.png b/emojis/src/main/res/drawable/emoji_nista_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f15.png rename to emojis/src/main/res/drawable/emoji_nista_f15.png diff --git a/app/src/main/res/drawable/emoji_nista_f16.png b/emojis/src/main/res/drawable/emoji_nista_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f16.png rename to emojis/src/main/res/drawable/emoji_nista_f16.png diff --git a/app/src/main/res/drawable/emoji_nista_f17.png b/emojis/src/main/res/drawable/emoji_nista_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f17.png rename to emojis/src/main/res/drawable/emoji_nista_f17.png diff --git a/app/src/main/res/drawable/emoji_nista_f18.png b/emojis/src/main/res/drawable/emoji_nista_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f18.png rename to emojis/src/main/res/drawable/emoji_nista_f18.png diff --git a/app/src/main/res/drawable/emoji_nista_f19.png b/emojis/src/main/res/drawable/emoji_nista_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f19.png rename to emojis/src/main/res/drawable/emoji_nista_f19.png diff --git a/app/src/main/res/drawable/emoji_nista_f2.png b/emojis/src/main/res/drawable/emoji_nista_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f2.png rename to emojis/src/main/res/drawable/emoji_nista_f2.png diff --git a/app/src/main/res/drawable/emoji_nista_f20.png b/emojis/src/main/res/drawable/emoji_nista_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f20.png rename to emojis/src/main/res/drawable/emoji_nista_f20.png diff --git a/app/src/main/res/drawable/emoji_nista_f21.png b/emojis/src/main/res/drawable/emoji_nista_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f21.png rename to emojis/src/main/res/drawable/emoji_nista_f21.png diff --git a/app/src/main/res/drawable/emoji_nista_f22.png b/emojis/src/main/res/drawable/emoji_nista_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f22.png rename to emojis/src/main/res/drawable/emoji_nista_f22.png diff --git a/app/src/main/res/drawable/emoji_nista_f23.png b/emojis/src/main/res/drawable/emoji_nista_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f23.png rename to emojis/src/main/res/drawable/emoji_nista_f23.png diff --git a/app/src/main/res/drawable/emoji_nista_f24.png b/emojis/src/main/res/drawable/emoji_nista_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f24.png rename to emojis/src/main/res/drawable/emoji_nista_f24.png diff --git a/app/src/main/res/drawable/emoji_nista_f25.png b/emojis/src/main/res/drawable/emoji_nista_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f25.png rename to emojis/src/main/res/drawable/emoji_nista_f25.png diff --git a/app/src/main/res/drawable/emoji_nista_f26.png b/emojis/src/main/res/drawable/emoji_nista_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f26.png rename to emojis/src/main/res/drawable/emoji_nista_f26.png diff --git a/app/src/main/res/drawable/emoji_nista_f27.png b/emojis/src/main/res/drawable/emoji_nista_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f27.png rename to emojis/src/main/res/drawable/emoji_nista_f27.png diff --git a/app/src/main/res/drawable/emoji_nista_f28.png b/emojis/src/main/res/drawable/emoji_nista_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f28.png rename to emojis/src/main/res/drawable/emoji_nista_f28.png diff --git a/app/src/main/res/drawable/emoji_nista_f29.png b/emojis/src/main/res/drawable/emoji_nista_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f29.png rename to emojis/src/main/res/drawable/emoji_nista_f29.png diff --git a/app/src/main/res/drawable/emoji_nista_f3.png b/emojis/src/main/res/drawable/emoji_nista_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f3.png rename to emojis/src/main/res/drawable/emoji_nista_f3.png diff --git a/app/src/main/res/drawable/emoji_nista_f30.png b/emojis/src/main/res/drawable/emoji_nista_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f30.png rename to emojis/src/main/res/drawable/emoji_nista_f30.png diff --git a/app/src/main/res/drawable/emoji_nista_f31.png b/emojis/src/main/res/drawable/emoji_nista_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f31.png rename to emojis/src/main/res/drawable/emoji_nista_f31.png diff --git a/app/src/main/res/drawable/emoji_nista_f32.png b/emojis/src/main/res/drawable/emoji_nista_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f32.png rename to emojis/src/main/res/drawable/emoji_nista_f32.png diff --git a/app/src/main/res/drawable/emoji_nista_f33.png b/emojis/src/main/res/drawable/emoji_nista_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f33.png rename to emojis/src/main/res/drawable/emoji_nista_f33.png diff --git a/app/src/main/res/drawable/emoji_nista_f34.png b/emojis/src/main/res/drawable/emoji_nista_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f34.png rename to emojis/src/main/res/drawable/emoji_nista_f34.png diff --git a/app/src/main/res/drawable/emoji_nista_f35.png b/emojis/src/main/res/drawable/emoji_nista_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f35.png rename to emojis/src/main/res/drawable/emoji_nista_f35.png diff --git a/app/src/main/res/drawable/emoji_nista_f36.png b/emojis/src/main/res/drawable/emoji_nista_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f36.png rename to emojis/src/main/res/drawable/emoji_nista_f36.png diff --git a/app/src/main/res/drawable/emoji_nista_f37.png b/emojis/src/main/res/drawable/emoji_nista_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f37.png rename to emojis/src/main/res/drawable/emoji_nista_f37.png diff --git a/app/src/main/res/drawable/emoji_nista_f38.png b/emojis/src/main/res/drawable/emoji_nista_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f38.png rename to emojis/src/main/res/drawable/emoji_nista_f38.png diff --git a/app/src/main/res/drawable/emoji_nista_f39.png b/emojis/src/main/res/drawable/emoji_nista_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f39.png rename to emojis/src/main/res/drawable/emoji_nista_f39.png diff --git a/app/src/main/res/drawable/emoji_nista_f4.png b/emojis/src/main/res/drawable/emoji_nista_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f4.png rename to emojis/src/main/res/drawable/emoji_nista_f4.png diff --git a/app/src/main/res/drawable/emoji_nista_f40.png b/emojis/src/main/res/drawable/emoji_nista_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f40.png rename to emojis/src/main/res/drawable/emoji_nista_f40.png diff --git a/app/src/main/res/drawable/emoji_nista_f41.png b/emojis/src/main/res/drawable/emoji_nista_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f41.png rename to emojis/src/main/res/drawable/emoji_nista_f41.png diff --git a/app/src/main/res/drawable/emoji_nista_f42.png b/emojis/src/main/res/drawable/emoji_nista_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f42.png rename to emojis/src/main/res/drawable/emoji_nista_f42.png diff --git a/app/src/main/res/drawable/emoji_nista_f5.png b/emojis/src/main/res/drawable/emoji_nista_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f5.png rename to emojis/src/main/res/drawable/emoji_nista_f5.png diff --git a/app/src/main/res/drawable/emoji_nista_f6.png b/emojis/src/main/res/drawable/emoji_nista_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f6.png rename to emojis/src/main/res/drawable/emoji_nista_f6.png diff --git a/app/src/main/res/drawable/emoji_nista_f7.png b/emojis/src/main/res/drawable/emoji_nista_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f7.png rename to emojis/src/main/res/drawable/emoji_nista_f7.png diff --git a/app/src/main/res/drawable/emoji_nista_f8.png b/emojis/src/main/res/drawable/emoji_nista_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f8.png rename to emojis/src/main/res/drawable/emoji_nista_f8.png diff --git a/app/src/main/res/drawable/emoji_nista_f9.png b/emojis/src/main/res/drawable/emoji_nista_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_nista_f9.png rename to emojis/src/main/res/drawable/emoji_nista_f9.png diff --git a/app/src/main/res/drawable/emoji_noffe.xml b/emojis/src/main/res/drawable/emoji_noffe.xml similarity index 100% rename from app/src/main/res/drawable/emoji_noffe.xml rename to emojis/src/main/res/drawable/emoji_noffe.xml diff --git a/app/src/main/res/drawable/emoji_noffe_f0.png b/emojis/src/main/res/drawable/emoji_noffe_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_noffe_f0.png rename to emojis/src/main/res/drawable/emoji_noffe_f0.png diff --git a/app/src/main/res/drawable/emoji_nono.xml b/emojis/src/main/res/drawable/emoji_nono.xml similarity index 100% rename from app/src/main/res/drawable/emoji_nono.xml rename to emojis/src/main/res/drawable/emoji_nono.xml diff --git a/app/src/main/res/drawable/emoji_nono_f0.png b/emojis/src/main/res/drawable/emoji_nono_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_nono_f0.png rename to emojis/src/main/res/drawable/emoji_nono_f0.png diff --git a/app/src/main/res/drawable/emoji_nono_f1.png b/emojis/src/main/res/drawable/emoji_nono_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_nono_f1.png rename to emojis/src/main/res/drawable/emoji_nono_f1.png diff --git a/app/src/main/res/drawable/emoji_notworthy.xml b/emojis/src/main/res/drawable/emoji_notworthy.xml similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy.xml rename to emojis/src/main/res/drawable/emoji_notworthy.xml diff --git a/app/src/main/res/drawable/emoji_notworthy_f0.png b/emojis/src/main/res/drawable/emoji_notworthy_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f0.png rename to emojis/src/main/res/drawable/emoji_notworthy_f0.png diff --git a/app/src/main/res/drawable/emoji_notworthy_f1.png b/emojis/src/main/res/drawable/emoji_notworthy_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f1.png rename to emojis/src/main/res/drawable/emoji_notworthy_f1.png diff --git a/app/src/main/res/drawable/emoji_notworthy_f2.png b/emojis/src/main/res/drawable/emoji_notworthy_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f2.png rename to emojis/src/main/res/drawable/emoji_notworthy_f2.png diff --git a/app/src/main/res/drawable/emoji_notworthy_f3.png b/emojis/src/main/res/drawable/emoji_notworthy_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f3.png rename to emojis/src/main/res/drawable/emoji_notworthy_f3.png diff --git a/app/src/main/res/drawable/emoji_notworthy_f4.png b/emojis/src/main/res/drawable/emoji_notworthy_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f4.png rename to emojis/src/main/res/drawable/emoji_notworthy_f4.png diff --git a/app/src/main/res/drawable/emoji_notworthy_f5.png b/emojis/src/main/res/drawable/emoji_notworthy_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_notworthy_f5.png rename to emojis/src/main/res/drawable/emoji_notworthy_f5.png diff --git a/app/src/main/res/drawable/emoji_off_topic.xml b/emojis/src/main/res/drawable/emoji_off_topic.xml similarity index 100% rename from app/src/main/res/drawable/emoji_off_topic.xml rename to emojis/src/main/res/drawable/emoji_off_topic.xml diff --git a/app/src/main/res/drawable/emoji_off_topic_f0.png b/emojis/src/main/res/drawable/emoji_off_topic_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_off_topic_f0.png rename to emojis/src/main/res/drawable/emoji_off_topic_f0.png diff --git a/app/src/main/res/drawable/emoji_pcsleep.xml b/emojis/src/main/res/drawable/emoji_pcsleep.xml similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep.xml rename to emojis/src/main/res/drawable/emoji_pcsleep.xml diff --git a/app/src/main/res/drawable/emoji_pcsleep_f0.png b/emojis/src/main/res/drawable/emoji_pcsleep_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f0.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f0.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f1.png b/emojis/src/main/res/drawable/emoji_pcsleep_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f1.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f1.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f10.png b/emojis/src/main/res/drawable/emoji_pcsleep_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f10.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f10.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f11.png b/emojis/src/main/res/drawable/emoji_pcsleep_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f11.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f11.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f12.png b/emojis/src/main/res/drawable/emoji_pcsleep_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f12.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f12.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f13.png b/emojis/src/main/res/drawable/emoji_pcsleep_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f13.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f13.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f14.png b/emojis/src/main/res/drawable/emoji_pcsleep_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f14.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f14.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f15.png b/emojis/src/main/res/drawable/emoji_pcsleep_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f15.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f15.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f16.png b/emojis/src/main/res/drawable/emoji_pcsleep_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f16.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f16.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f17.png b/emojis/src/main/res/drawable/emoji_pcsleep_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f17.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f17.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f18.png b/emojis/src/main/res/drawable/emoji_pcsleep_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f18.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f18.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f2.png b/emojis/src/main/res/drawable/emoji_pcsleep_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f2.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f2.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f3.png b/emojis/src/main/res/drawable/emoji_pcsleep_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f3.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f3.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f4.png b/emojis/src/main/res/drawable/emoji_pcsleep_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f4.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f4.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f5.png b/emojis/src/main/res/drawable/emoji_pcsleep_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f5.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f5.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f6.png b/emojis/src/main/res/drawable/emoji_pcsleep_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f6.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f6.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f7.png b/emojis/src/main/res/drawable/emoji_pcsleep_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f7.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f7.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f8.png b/emojis/src/main/res/drawable/emoji_pcsleep_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f8.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f8.png diff --git a/app/src/main/res/drawable/emoji_pcsleep_f9.png b/emojis/src/main/res/drawable/emoji_pcsleep_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_pcsleep_f9.png rename to emojis/src/main/res/drawable/emoji_pcsleep_f9.png diff --git a/app/src/main/res/drawable/emoji_peace.xml b/emojis/src/main/res/drawable/emoji_peace.xml similarity index 100% rename from app/src/main/res/drawable/emoji_peace.xml rename to emojis/src/main/res/drawable/emoji_peace.xml diff --git a/app/src/main/res/drawable/emoji_peace_f0.png b/emojis/src/main/res/drawable/emoji_peace_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_peace_f0.png rename to emojis/src/main/res/drawable/emoji_peace_f0.png diff --git a/app/src/main/res/drawable/emoji_peace_f1.png b/emojis/src/main/res/drawable/emoji_peace_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_peace_f1.png rename to emojis/src/main/res/drawable/emoji_peace_f1.png diff --git a/app/src/main/res/drawable/emoji_peace_f2.png b/emojis/src/main/res/drawable/emoji_peace_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_peace_f2.png rename to emojis/src/main/res/drawable/emoji_peace_f2.png diff --git a/app/src/main/res/drawable/emoji_peace_f3.png b/emojis/src/main/res/drawable/emoji_peace_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_peace_f3.png rename to emojis/src/main/res/drawable/emoji_peace_f3.png diff --git a/app/src/main/res/drawable/emoji_pinokio.xml b/emojis/src/main/res/drawable/emoji_pinokio.xml similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio.xml rename to emojis/src/main/res/drawable/emoji_pinokio.xml diff --git a/app/src/main/res/drawable/emoji_pinokio_f0.png b/emojis/src/main/res/drawable/emoji_pinokio_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f0.png rename to emojis/src/main/res/drawable/emoji_pinokio_f0.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f1.png b/emojis/src/main/res/drawable/emoji_pinokio_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f1.png rename to emojis/src/main/res/drawable/emoji_pinokio_f1.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f10.png b/emojis/src/main/res/drawable/emoji_pinokio_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f10.png rename to emojis/src/main/res/drawable/emoji_pinokio_f10.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f11.png b/emojis/src/main/res/drawable/emoji_pinokio_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f11.png rename to emojis/src/main/res/drawable/emoji_pinokio_f11.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f12.png b/emojis/src/main/res/drawable/emoji_pinokio_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f12.png rename to emojis/src/main/res/drawable/emoji_pinokio_f12.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f13.png b/emojis/src/main/res/drawable/emoji_pinokio_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f13.png rename to emojis/src/main/res/drawable/emoji_pinokio_f13.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f14.png b/emojis/src/main/res/drawable/emoji_pinokio_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f14.png rename to emojis/src/main/res/drawable/emoji_pinokio_f14.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f15.png b/emojis/src/main/res/drawable/emoji_pinokio_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f15.png rename to emojis/src/main/res/drawable/emoji_pinokio_f15.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f2.png b/emojis/src/main/res/drawable/emoji_pinokio_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f2.png rename to emojis/src/main/res/drawable/emoji_pinokio_f2.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f3.png b/emojis/src/main/res/drawable/emoji_pinokio_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f3.png rename to emojis/src/main/res/drawable/emoji_pinokio_f3.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f4.png b/emojis/src/main/res/drawable/emoji_pinokio_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f4.png rename to emojis/src/main/res/drawable/emoji_pinokio_f4.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f5.png b/emojis/src/main/res/drawable/emoji_pinokio_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f5.png rename to emojis/src/main/res/drawable/emoji_pinokio_f5.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f6.png b/emojis/src/main/res/drawable/emoji_pinokio_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f6.png rename to emojis/src/main/res/drawable/emoji_pinokio_f6.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f7.png b/emojis/src/main/res/drawable/emoji_pinokio_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f7.png rename to emojis/src/main/res/drawable/emoji_pinokio_f7.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f8.png b/emojis/src/main/res/drawable/emoji_pinokio_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f8.png rename to emojis/src/main/res/drawable/emoji_pinokio_f8.png diff --git a/app/src/main/res/drawable/emoji_pinokio_f9.png b/emojis/src/main/res/drawable/emoji_pinokio_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_pinokio_f9.png rename to emojis/src/main/res/drawable/emoji_pinokio_f9.png diff --git a/app/src/main/res/drawable/emoji_poke.xml b/emojis/src/main/res/drawable/emoji_poke.xml similarity index 100% rename from app/src/main/res/drawable/emoji_poke.xml rename to emojis/src/main/res/drawable/emoji_poke.xml diff --git a/app/src/main/res/drawable/emoji_poke_f0.png b/emojis/src/main/res/drawable/emoji_poke_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_poke_f0.png rename to emojis/src/main/res/drawable/emoji_poke_f0.png diff --git a/app/src/main/res/drawable/emoji_poke_f1.png b/emojis/src/main/res/drawable/emoji_poke_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_poke_f1.png rename to emojis/src/main/res/drawable/emoji_poke_f1.png diff --git a/app/src/main/res/drawable/emoji_poke_f2.png b/emojis/src/main/res/drawable/emoji_poke_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_poke_f2.png rename to emojis/src/main/res/drawable/emoji_poke_f2.png diff --git a/app/src/main/res/drawable/emoji_poke_f3.png b/emojis/src/main/res/drawable/emoji_poke_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_poke_f3.png rename to emojis/src/main/res/drawable/emoji_poke_f3.png diff --git a/app/src/main/res/drawable/emoji_police.xml b/emojis/src/main/res/drawable/emoji_police.xml similarity index 100% rename from app/src/main/res/drawable/emoji_police.xml rename to emojis/src/main/res/drawable/emoji_police.xml diff --git a/app/src/main/res/drawable/emoji_police_f0.png b/emojis/src/main/res/drawable/emoji_police_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_police_f0.png rename to emojis/src/main/res/drawable/emoji_police_f0.png diff --git a/app/src/main/res/drawable/emoji_puke.xml b/emojis/src/main/res/drawable/emoji_puke.xml similarity index 100% rename from app/src/main/res/drawable/emoji_puke.xml rename to emojis/src/main/res/drawable/emoji_puke.xml diff --git a/app/src/main/res/drawable/emoji_puke_f0.png b/emojis/src/main/res/drawable/emoji_puke_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f0.png rename to emojis/src/main/res/drawable/emoji_puke_f0.png diff --git a/app/src/main/res/drawable/emoji_puke_f1.png b/emojis/src/main/res/drawable/emoji_puke_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f1.png rename to emojis/src/main/res/drawable/emoji_puke_f1.png diff --git a/app/src/main/res/drawable/emoji_puke_f2.png b/emojis/src/main/res/drawable/emoji_puke_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f2.png rename to emojis/src/main/res/drawable/emoji_puke_f2.png diff --git a/app/src/main/res/drawable/emoji_puke_f3.png b/emojis/src/main/res/drawable/emoji_puke_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f3.png rename to emojis/src/main/res/drawable/emoji_puke_f3.png diff --git a/app/src/main/res/drawable/emoji_puke_f4.png b/emojis/src/main/res/drawable/emoji_puke_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f4.png rename to emojis/src/main/res/drawable/emoji_puke_f4.png diff --git a/app/src/main/res/drawable/emoji_puke_f5.png b/emojis/src/main/res/drawable/emoji_puke_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_puke_f5.png rename to emojis/src/main/res/drawable/emoji_puke_f5.png diff --git a/app/src/main/res/drawable/emoji_question.xml b/emojis/src/main/res/drawable/emoji_question.xml similarity index 100% rename from app/src/main/res/drawable/emoji_question.xml rename to emojis/src/main/res/drawable/emoji_question.xml diff --git a/app/src/main/res/drawable/emoji_question_f0.png b/emojis/src/main/res/drawable/emoji_question_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_question_f0.png rename to emojis/src/main/res/drawable/emoji_question_f0.png diff --git a/app/src/main/res/drawable/emoji_redface.xml b/emojis/src/main/res/drawable/emoji_redface.xml similarity index 100% rename from app/src/main/res/drawable/emoji_redface.xml rename to emojis/src/main/res/drawable/emoji_redface.xml diff --git a/app/src/main/res/drawable/emoji_redface_f0.png b/emojis/src/main/res/drawable/emoji_redface_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_redface_f0.png rename to emojis/src/main/res/drawable/emoji_redface_f0.png diff --git a/app/src/main/res/drawable/emoji_rofl.xml b/emojis/src/main/res/drawable/emoji_rofl.xml similarity index 100% rename from app/src/main/res/drawable/emoji_rofl.xml rename to emojis/src/main/res/drawable/emoji_rofl.xml diff --git a/app/src/main/res/drawable/emoji_rofl_f0.png b/emojis/src/main/res/drawable/emoji_rofl_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f0.png rename to emojis/src/main/res/drawable/emoji_rofl_f0.png diff --git a/app/src/main/res/drawable/emoji_rofl_f1.png b/emojis/src/main/res/drawable/emoji_rofl_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f1.png rename to emojis/src/main/res/drawable/emoji_rofl_f1.png diff --git a/app/src/main/res/drawable/emoji_rofl_f10.png b/emojis/src/main/res/drawable/emoji_rofl_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f10.png rename to emojis/src/main/res/drawable/emoji_rofl_f10.png diff --git a/app/src/main/res/drawable/emoji_rofl_f11.png b/emojis/src/main/res/drawable/emoji_rofl_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f11.png rename to emojis/src/main/res/drawable/emoji_rofl_f11.png diff --git a/app/src/main/res/drawable/emoji_rofl_f12.png b/emojis/src/main/res/drawable/emoji_rofl_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f12.png rename to emojis/src/main/res/drawable/emoji_rofl_f12.png diff --git a/app/src/main/res/drawable/emoji_rofl_f13.png b/emojis/src/main/res/drawable/emoji_rofl_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f13.png rename to emojis/src/main/res/drawable/emoji_rofl_f13.png diff --git a/app/src/main/res/drawable/emoji_rofl_f14.png b/emojis/src/main/res/drawable/emoji_rofl_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f14.png rename to emojis/src/main/res/drawable/emoji_rofl_f14.png diff --git a/app/src/main/res/drawable/emoji_rofl_f15.png b/emojis/src/main/res/drawable/emoji_rofl_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f15.png rename to emojis/src/main/res/drawable/emoji_rofl_f15.png diff --git a/app/src/main/res/drawable/emoji_rofl_f16.png b/emojis/src/main/res/drawable/emoji_rofl_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f16.png rename to emojis/src/main/res/drawable/emoji_rofl_f16.png diff --git a/app/src/main/res/drawable/emoji_rofl_f17.png b/emojis/src/main/res/drawable/emoji_rofl_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f17.png rename to emojis/src/main/res/drawable/emoji_rofl_f17.png diff --git a/app/src/main/res/drawable/emoji_rofl_f18.png b/emojis/src/main/res/drawable/emoji_rofl_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f18.png rename to emojis/src/main/res/drawable/emoji_rofl_f18.png diff --git a/app/src/main/res/drawable/emoji_rofl_f19.png b/emojis/src/main/res/drawable/emoji_rofl_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f19.png rename to emojis/src/main/res/drawable/emoji_rofl_f19.png diff --git a/app/src/main/res/drawable/emoji_rofl_f2.png b/emojis/src/main/res/drawable/emoji_rofl_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f2.png rename to emojis/src/main/res/drawable/emoji_rofl_f2.png diff --git a/app/src/main/res/drawable/emoji_rofl_f20.png b/emojis/src/main/res/drawable/emoji_rofl_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f20.png rename to emojis/src/main/res/drawable/emoji_rofl_f20.png diff --git a/app/src/main/res/drawable/emoji_rofl_f21.png b/emojis/src/main/res/drawable/emoji_rofl_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f21.png rename to emojis/src/main/res/drawable/emoji_rofl_f21.png diff --git a/app/src/main/res/drawable/emoji_rofl_f22.png b/emojis/src/main/res/drawable/emoji_rofl_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f22.png rename to emojis/src/main/res/drawable/emoji_rofl_f22.png diff --git a/app/src/main/res/drawable/emoji_rofl_f23.png b/emojis/src/main/res/drawable/emoji_rofl_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f23.png rename to emojis/src/main/res/drawable/emoji_rofl_f23.png diff --git a/app/src/main/res/drawable/emoji_rofl_f24.png b/emojis/src/main/res/drawable/emoji_rofl_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f24.png rename to emojis/src/main/res/drawable/emoji_rofl_f24.png diff --git a/app/src/main/res/drawable/emoji_rofl_f25.png b/emojis/src/main/res/drawable/emoji_rofl_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f25.png rename to emojis/src/main/res/drawable/emoji_rofl_f25.png diff --git a/app/src/main/res/drawable/emoji_rofl_f26.png b/emojis/src/main/res/drawable/emoji_rofl_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f26.png rename to emojis/src/main/res/drawable/emoji_rofl_f26.png diff --git a/app/src/main/res/drawable/emoji_rofl_f27.png b/emojis/src/main/res/drawable/emoji_rofl_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f27.png rename to emojis/src/main/res/drawable/emoji_rofl_f27.png diff --git a/app/src/main/res/drawable/emoji_rofl_f28.png b/emojis/src/main/res/drawable/emoji_rofl_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f28.png rename to emojis/src/main/res/drawable/emoji_rofl_f28.png diff --git a/app/src/main/res/drawable/emoji_rofl_f29.png b/emojis/src/main/res/drawable/emoji_rofl_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f29.png rename to emojis/src/main/res/drawable/emoji_rofl_f29.png diff --git a/app/src/main/res/drawable/emoji_rofl_f3.png b/emojis/src/main/res/drawable/emoji_rofl_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f3.png rename to emojis/src/main/res/drawable/emoji_rofl_f3.png diff --git a/app/src/main/res/drawable/emoji_rofl_f30.png b/emojis/src/main/res/drawable/emoji_rofl_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f30.png rename to emojis/src/main/res/drawable/emoji_rofl_f30.png diff --git a/app/src/main/res/drawable/emoji_rofl_f31.png b/emojis/src/main/res/drawable/emoji_rofl_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f31.png rename to emojis/src/main/res/drawable/emoji_rofl_f31.png diff --git a/app/src/main/res/drawable/emoji_rofl_f32.png b/emojis/src/main/res/drawable/emoji_rofl_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f32.png rename to emojis/src/main/res/drawable/emoji_rofl_f32.png diff --git a/app/src/main/res/drawable/emoji_rofl_f33.png b/emojis/src/main/res/drawable/emoji_rofl_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f33.png rename to emojis/src/main/res/drawable/emoji_rofl_f33.png diff --git a/app/src/main/res/drawable/emoji_rofl_f34.png b/emojis/src/main/res/drawable/emoji_rofl_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f34.png rename to emojis/src/main/res/drawable/emoji_rofl_f34.png diff --git a/app/src/main/res/drawable/emoji_rofl_f35.png b/emojis/src/main/res/drawable/emoji_rofl_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f35.png rename to emojis/src/main/res/drawable/emoji_rofl_f35.png diff --git a/app/src/main/res/drawable/emoji_rofl_f36.png b/emojis/src/main/res/drawable/emoji_rofl_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f36.png rename to emojis/src/main/res/drawable/emoji_rofl_f36.png diff --git a/app/src/main/res/drawable/emoji_rofl_f37.png b/emojis/src/main/res/drawable/emoji_rofl_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f37.png rename to emojis/src/main/res/drawable/emoji_rofl_f37.png diff --git a/app/src/main/res/drawable/emoji_rofl_f38.png b/emojis/src/main/res/drawable/emoji_rofl_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f38.png rename to emojis/src/main/res/drawable/emoji_rofl_f38.png diff --git a/app/src/main/res/drawable/emoji_rofl_f39.png b/emojis/src/main/res/drawable/emoji_rofl_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f39.png rename to emojis/src/main/res/drawable/emoji_rofl_f39.png diff --git a/app/src/main/res/drawable/emoji_rofl_f4.png b/emojis/src/main/res/drawable/emoji_rofl_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f4.png rename to emojis/src/main/res/drawable/emoji_rofl_f4.png diff --git a/app/src/main/res/drawable/emoji_rofl_f40.png b/emojis/src/main/res/drawable/emoji_rofl_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f40.png rename to emojis/src/main/res/drawable/emoji_rofl_f40.png diff --git a/app/src/main/res/drawable/emoji_rofl_f41.png b/emojis/src/main/res/drawable/emoji_rofl_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f41.png rename to emojis/src/main/res/drawable/emoji_rofl_f41.png diff --git a/app/src/main/res/drawable/emoji_rofl_f42.png b/emojis/src/main/res/drawable/emoji_rofl_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f42.png rename to emojis/src/main/res/drawable/emoji_rofl_f42.png diff --git a/app/src/main/res/drawable/emoji_rofl_f43.png b/emojis/src/main/res/drawable/emoji_rofl_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f43.png rename to emojis/src/main/res/drawable/emoji_rofl_f43.png diff --git a/app/src/main/res/drawable/emoji_rofl_f44.png b/emojis/src/main/res/drawable/emoji_rofl_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f44.png rename to emojis/src/main/res/drawable/emoji_rofl_f44.png diff --git a/app/src/main/res/drawable/emoji_rofl_f45.png b/emojis/src/main/res/drawable/emoji_rofl_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f45.png rename to emojis/src/main/res/drawable/emoji_rofl_f45.png diff --git a/app/src/main/res/drawable/emoji_rofl_f46.png b/emojis/src/main/res/drawable/emoji_rofl_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f46.png rename to emojis/src/main/res/drawable/emoji_rofl_f46.png diff --git a/app/src/main/res/drawable/emoji_rofl_f47.png b/emojis/src/main/res/drawable/emoji_rofl_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f47.png rename to emojis/src/main/res/drawable/emoji_rofl_f47.png diff --git a/app/src/main/res/drawable/emoji_rofl_f48.png b/emojis/src/main/res/drawable/emoji_rofl_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f48.png rename to emojis/src/main/res/drawable/emoji_rofl_f48.png diff --git a/app/src/main/res/drawable/emoji_rofl_f49.png b/emojis/src/main/res/drawable/emoji_rofl_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f49.png rename to emojis/src/main/res/drawable/emoji_rofl_f49.png diff --git a/app/src/main/res/drawable/emoji_rofl_f5.png b/emojis/src/main/res/drawable/emoji_rofl_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f5.png rename to emojis/src/main/res/drawable/emoji_rofl_f5.png diff --git a/app/src/main/res/drawable/emoji_rofl_f50.png b/emojis/src/main/res/drawable/emoji_rofl_f50.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f50.png rename to emojis/src/main/res/drawable/emoji_rofl_f50.png diff --git a/app/src/main/res/drawable/emoji_rofl_f51.png b/emojis/src/main/res/drawable/emoji_rofl_f51.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f51.png rename to emojis/src/main/res/drawable/emoji_rofl_f51.png diff --git a/app/src/main/res/drawable/emoji_rofl_f52.png b/emojis/src/main/res/drawable/emoji_rofl_f52.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f52.png rename to emojis/src/main/res/drawable/emoji_rofl_f52.png diff --git a/app/src/main/res/drawable/emoji_rofl_f53.png b/emojis/src/main/res/drawable/emoji_rofl_f53.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f53.png rename to emojis/src/main/res/drawable/emoji_rofl_f53.png diff --git a/app/src/main/res/drawable/emoji_rofl_f54.png b/emojis/src/main/res/drawable/emoji_rofl_f54.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f54.png rename to emojis/src/main/res/drawable/emoji_rofl_f54.png diff --git a/app/src/main/res/drawable/emoji_rofl_f55.png b/emojis/src/main/res/drawable/emoji_rofl_f55.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f55.png rename to emojis/src/main/res/drawable/emoji_rofl_f55.png diff --git a/app/src/main/res/drawable/emoji_rofl_f56.png b/emojis/src/main/res/drawable/emoji_rofl_f56.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f56.png rename to emojis/src/main/res/drawable/emoji_rofl_f56.png diff --git a/app/src/main/res/drawable/emoji_rofl_f57.png b/emojis/src/main/res/drawable/emoji_rofl_f57.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f57.png rename to emojis/src/main/res/drawable/emoji_rofl_f57.png diff --git a/app/src/main/res/drawable/emoji_rofl_f58.png b/emojis/src/main/res/drawable/emoji_rofl_f58.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f58.png rename to emojis/src/main/res/drawable/emoji_rofl_f58.png diff --git a/app/src/main/res/drawable/emoji_rofl_f59.png b/emojis/src/main/res/drawable/emoji_rofl_f59.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f59.png rename to emojis/src/main/res/drawable/emoji_rofl_f59.png diff --git a/app/src/main/res/drawable/emoji_rofl_f6.png b/emojis/src/main/res/drawable/emoji_rofl_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f6.png rename to emojis/src/main/res/drawable/emoji_rofl_f6.png diff --git a/app/src/main/res/drawable/emoji_rofl_f7.png b/emojis/src/main/res/drawable/emoji_rofl_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f7.png rename to emojis/src/main/res/drawable/emoji_rofl_f7.png diff --git a/app/src/main/res/drawable/emoji_rofl_f8.png b/emojis/src/main/res/drawable/emoji_rofl_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f8.png rename to emojis/src/main/res/drawable/emoji_rofl_f8.png diff --git a/app/src/main/res/drawable/emoji_rofl_f9.png b/emojis/src/main/res/drawable/emoji_rofl_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_rofl_f9.png rename to emojis/src/main/res/drawable/emoji_rofl_f9.png diff --git a/app/src/main/res/drawable/emoji_roll_over.xml b/emojis/src/main/res/drawable/emoji_roll_over.xml similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over.xml rename to emojis/src/main/res/drawable/emoji_roll_over.xml diff --git a/app/src/main/res/drawable/emoji_roll_over_f0.png b/emojis/src/main/res/drawable/emoji_roll_over_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over_f0.png rename to emojis/src/main/res/drawable/emoji_roll_over_f0.png diff --git a/app/src/main/res/drawable/emoji_roll_over_f1.png b/emojis/src/main/res/drawable/emoji_roll_over_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over_f1.png rename to emojis/src/main/res/drawable/emoji_roll_over_f1.png diff --git a/app/src/main/res/drawable/emoji_roll_over_f2.png b/emojis/src/main/res/drawable/emoji_roll_over_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over_f2.png rename to emojis/src/main/res/drawable/emoji_roll_over_f2.png diff --git a/app/src/main/res/drawable/emoji_roll_over_f3.png b/emojis/src/main/res/drawable/emoji_roll_over_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over_f3.png rename to emojis/src/main/res/drawable/emoji_roll_over_f3.png diff --git a/app/src/main/res/drawable/emoji_roll_over_f4.png b/emojis/src/main/res/drawable/emoji_roll_over_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_roll_over_f4.png rename to emojis/src/main/res/drawable/emoji_roll_over_f4.png diff --git a/app/src/main/res/drawable/emoji_rolleyes.xml b/emojis/src/main/res/drawable/emoji_rolleyes.xml similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes.xml rename to emojis/src/main/res/drawable/emoji_rolleyes.xml diff --git a/app/src/main/res/drawable/emoji_rolleyes_f0.png b/emojis/src/main/res/drawable/emoji_rolleyes_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f0.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f0.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f1.png b/emojis/src/main/res/drawable/emoji_rolleyes_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f1.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f1.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f2.png b/emojis/src/main/res/drawable/emoji_rolleyes_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f2.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f2.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f3.png b/emojis/src/main/res/drawable/emoji_rolleyes_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f3.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f3.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f4.png b/emojis/src/main/res/drawable/emoji_rolleyes_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f4.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f4.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f5.png b/emojis/src/main/res/drawable/emoji_rolleyes_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f5.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f5.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f6.png b/emojis/src/main/res/drawable/emoji_rolleyes_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f6.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f6.png diff --git a/app/src/main/res/drawable/emoji_rolleyes_f7.png b/emojis/src/main/res/drawable/emoji_rolleyes_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_rolleyes_f7.png rename to emojis/src/main/res/drawable/emoji_rolleyes_f7.png diff --git a/app/src/main/res/drawable/emoji_rotfl.xml b/emojis/src/main/res/drawable/emoji_rotfl.xml similarity index 100% rename from app/src/main/res/drawable/emoji_rotfl.xml rename to emojis/src/main/res/drawable/emoji_rotfl.xml diff --git a/app/src/main/res/drawable/emoji_rotfl_f0.png b/emojis/src/main/res/drawable/emoji_rotfl_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_rotfl_f0.png rename to emojis/src/main/res/drawable/emoji_rotfl_f0.png diff --git a/app/src/main/res/drawable/emoji_sad.xml b/emojis/src/main/res/drawable/emoji_sad.xml similarity index 100% rename from app/src/main/res/drawable/emoji_sad.xml rename to emojis/src/main/res/drawable/emoji_sad.xml diff --git a/app/src/main/res/drawable/emoji_sad_f0.png b/emojis/src/main/res/drawable/emoji_sad_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_sad_f0.png rename to emojis/src/main/res/drawable/emoji_sad_f0.png diff --git a/app/src/main/res/drawable/emoji_sad_f1.png b/emojis/src/main/res/drawable/emoji_sad_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_sad_f1.png rename to emojis/src/main/res/drawable/emoji_sad_f1.png diff --git a/app/src/main/res/drawable/emoji_sad_f2.png b/emojis/src/main/res/drawable/emoji_sad_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_sad_f2.png rename to emojis/src/main/res/drawable/emoji_sad_f2.png diff --git a/app/src/main/res/drawable/emoji_sad_f3.png b/emojis/src/main/res/drawable/emoji_sad_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_sad_f3.png rename to emojis/src/main/res/drawable/emoji_sad_f3.png diff --git a/app/src/main/res/drawable/emoji_sad_f4.png b/emojis/src/main/res/drawable/emoji_sad_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_sad_f4.png rename to emojis/src/main/res/drawable/emoji_sad_f4.png diff --git a/app/src/main/res/drawable/emoji_seestars.xml b/emojis/src/main/res/drawable/emoji_seestars.xml similarity index 100% rename from app/src/main/res/drawable/emoji_seestars.xml rename to emojis/src/main/res/drawable/emoji_seestars.xml diff --git a/app/src/main/res/drawable/emoji_seestars_f0.png b/emojis/src/main/res/drawable/emoji_seestars_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_seestars_f0.png rename to emojis/src/main/res/drawable/emoji_seestars_f0.png diff --git a/app/src/main/res/drawable/emoji_seestars_f1.png b/emojis/src/main/res/drawable/emoji_seestars_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_seestars_f1.png rename to emojis/src/main/res/drawable/emoji_seestars_f1.png diff --git a/app/src/main/res/drawable/emoji_seestars_f2.png b/emojis/src/main/res/drawable/emoji_seestars_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_seestars_f2.png rename to emojis/src/main/res/drawable/emoji_seestars_f2.png diff --git a/app/src/main/res/drawable/emoji_seestars_f3.png b/emojis/src/main/res/drawable/emoji_seestars_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_seestars_f3.png rename to emojis/src/main/res/drawable/emoji_seestars_f3.png diff --git a/app/src/main/res/drawable/emoji_seestars_f4.png b/emojis/src/main/res/drawable/emoji_seestars_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_seestars_f4.png rename to emojis/src/main/res/drawable/emoji_seestars_f4.png diff --git a/app/src/main/res/drawable/emoji_sfyri.xml b/emojis/src/main/res/drawable/emoji_sfyri.xml similarity index 100% rename from app/src/main/res/drawable/emoji_sfyri.xml rename to emojis/src/main/res/drawable/emoji_sfyri.xml diff --git a/app/src/main/res/drawable/emoji_sfyri_f0.png b/emojis/src/main/res/drawable/emoji_sfyri_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_sfyri_f0.png rename to emojis/src/main/res/drawable/emoji_sfyri_f0.png diff --git a/app/src/main/res/drawable/emoji_sfyri_f1.png b/emojis/src/main/res/drawable/emoji_sfyri_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_sfyri_f1.png rename to emojis/src/main/res/drawable/emoji_sfyri_f1.png diff --git a/app/src/main/res/drawable/emoji_sfyri_f2.png b/emojis/src/main/res/drawable/emoji_sfyri_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_sfyri_f2.png rename to emojis/src/main/res/drawable/emoji_sfyri_f2.png diff --git a/app/src/main/res/drawable/emoji_sfyri_f3.png b/emojis/src/main/res/drawable/emoji_sfyri_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_sfyri_f3.png rename to emojis/src/main/res/drawable/emoji_sfyri_f3.png diff --git a/app/src/main/res/drawable/emoji_shamed_bag.jpg b/emojis/src/main/res/drawable/emoji_shamed_bag.jpg similarity index 100% rename from app/src/main/res/drawable/emoji_shamed_bag.jpg rename to emojis/src/main/res/drawable/emoji_shamed_bag.jpg diff --git a/app/src/main/res/drawable/emoji_shifty.xml b/emojis/src/main/res/drawable/emoji_shifty.xml similarity index 100% rename from app/src/main/res/drawable/emoji_shifty.xml rename to emojis/src/main/res/drawable/emoji_shifty.xml diff --git a/app/src/main/res/drawable/emoji_shifty_f0.png b/emojis/src/main/res/drawable/emoji_shifty_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f0.png rename to emojis/src/main/res/drawable/emoji_shifty_f0.png diff --git a/app/src/main/res/drawable/emoji_shifty_f1.png b/emojis/src/main/res/drawable/emoji_shifty_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f1.png rename to emojis/src/main/res/drawable/emoji_shifty_f1.png diff --git a/app/src/main/res/drawable/emoji_shifty_f2.png b/emojis/src/main/res/drawable/emoji_shifty_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f2.png rename to emojis/src/main/res/drawable/emoji_shifty_f2.png diff --git a/app/src/main/res/drawable/emoji_shifty_f3.png b/emojis/src/main/res/drawable/emoji_shifty_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f3.png rename to emojis/src/main/res/drawable/emoji_shifty_f3.png diff --git a/app/src/main/res/drawable/emoji_shifty_f4.png b/emojis/src/main/res/drawable/emoji_shifty_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f4.png rename to emojis/src/main/res/drawable/emoji_shifty_f4.png diff --git a/app/src/main/res/drawable/emoji_shifty_f5.png b/emojis/src/main/res/drawable/emoji_shifty_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f5.png rename to emojis/src/main/res/drawable/emoji_shifty_f5.png diff --git a/app/src/main/res/drawable/emoji_shifty_f6.png b/emojis/src/main/res/drawable/emoji_shifty_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_shifty_f6.png rename to emojis/src/main/res/drawable/emoji_shifty_f6.png diff --git a/app/src/main/res/drawable/emoji_shocked.xml b/emojis/src/main/res/drawable/emoji_shocked.xml similarity index 100% rename from app/src/main/res/drawable/emoji_shocked.xml rename to emojis/src/main/res/drawable/emoji_shocked.xml diff --git a/app/src/main/res/drawable/emoji_shocked2.png b/emojis/src/main/res/drawable/emoji_shocked2.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked2.png rename to emojis/src/main/res/drawable/emoji_shocked2.png diff --git a/app/src/main/res/drawable/emoji_shocked_f0.png b/emojis/src/main/res/drawable/emoji_shocked_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f0.png rename to emojis/src/main/res/drawable/emoji_shocked_f0.png diff --git a/app/src/main/res/drawable/emoji_shocked_f1.png b/emojis/src/main/res/drawable/emoji_shocked_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f1.png rename to emojis/src/main/res/drawable/emoji_shocked_f1.png diff --git a/app/src/main/res/drawable/emoji_shocked_f2.png b/emojis/src/main/res/drawable/emoji_shocked_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f2.png rename to emojis/src/main/res/drawable/emoji_shocked_f2.png diff --git a/app/src/main/res/drawable/emoji_shocked_f3.png b/emojis/src/main/res/drawable/emoji_shocked_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f3.png rename to emojis/src/main/res/drawable/emoji_shocked_f3.png diff --git a/app/src/main/res/drawable/emoji_shocked_f4.png b/emojis/src/main/res/drawable/emoji_shocked_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f4.png rename to emojis/src/main/res/drawable/emoji_shocked_f4.png diff --git a/app/src/main/res/drawable/emoji_shocked_f5.png b/emojis/src/main/res/drawable/emoji_shocked_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f5.png rename to emojis/src/main/res/drawable/emoji_shocked_f5.png diff --git a/app/src/main/res/drawable/emoji_shocked_f6.png b/emojis/src/main/res/drawable/emoji_shocked_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f6.png rename to emojis/src/main/res/drawable/emoji_shocked_f6.png diff --git a/app/src/main/res/drawable/emoji_shocked_f7.png b/emojis/src/main/res/drawable/emoji_shocked_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f7.png rename to emojis/src/main/res/drawable/emoji_shocked_f7.png diff --git a/app/src/main/res/drawable/emoji_shocked_f8.png b/emojis/src/main/res/drawable/emoji_shocked_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f8.png rename to emojis/src/main/res/drawable/emoji_shocked_f8.png diff --git a/app/src/main/res/drawable/emoji_shocked_f9.png b/emojis/src/main/res/drawable/emoji_shocked_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_shocked_f9.png rename to emojis/src/main/res/drawable/emoji_shocked_f9.png diff --git a/app/src/main/res/drawable/emoji_shout.xml b/emojis/src/main/res/drawable/emoji_shout.xml similarity index 100% rename from app/src/main/res/drawable/emoji_shout.xml rename to emojis/src/main/res/drawable/emoji_shout.xml diff --git a/app/src/main/res/drawable/emoji_shout_f0.png b/emojis/src/main/res/drawable/emoji_shout_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f0.png rename to emojis/src/main/res/drawable/emoji_shout_f0.png diff --git a/app/src/main/res/drawable/emoji_shout_f1.png b/emojis/src/main/res/drawable/emoji_shout_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f1.png rename to emojis/src/main/res/drawable/emoji_shout_f1.png diff --git a/app/src/main/res/drawable/emoji_shout_f10.png b/emojis/src/main/res/drawable/emoji_shout_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f10.png rename to emojis/src/main/res/drawable/emoji_shout_f10.png diff --git a/app/src/main/res/drawable/emoji_shout_f11.png b/emojis/src/main/res/drawable/emoji_shout_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f11.png rename to emojis/src/main/res/drawable/emoji_shout_f11.png diff --git a/app/src/main/res/drawable/emoji_shout_f12.png b/emojis/src/main/res/drawable/emoji_shout_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f12.png rename to emojis/src/main/res/drawable/emoji_shout_f12.png diff --git a/app/src/main/res/drawable/emoji_shout_f13.png b/emojis/src/main/res/drawable/emoji_shout_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f13.png rename to emojis/src/main/res/drawable/emoji_shout_f13.png diff --git a/app/src/main/res/drawable/emoji_shout_f14.png b/emojis/src/main/res/drawable/emoji_shout_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f14.png rename to emojis/src/main/res/drawable/emoji_shout_f14.png diff --git a/app/src/main/res/drawable/emoji_shout_f15.png b/emojis/src/main/res/drawable/emoji_shout_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f15.png rename to emojis/src/main/res/drawable/emoji_shout_f15.png diff --git a/app/src/main/res/drawable/emoji_shout_f16.png b/emojis/src/main/res/drawable/emoji_shout_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f16.png rename to emojis/src/main/res/drawable/emoji_shout_f16.png diff --git a/app/src/main/res/drawable/emoji_shout_f2.png b/emojis/src/main/res/drawable/emoji_shout_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f2.png rename to emojis/src/main/res/drawable/emoji_shout_f2.png diff --git a/app/src/main/res/drawable/emoji_shout_f3.png b/emojis/src/main/res/drawable/emoji_shout_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f3.png rename to emojis/src/main/res/drawable/emoji_shout_f3.png diff --git a/app/src/main/res/drawable/emoji_shout_f4.png b/emojis/src/main/res/drawable/emoji_shout_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f4.png rename to emojis/src/main/res/drawable/emoji_shout_f4.png diff --git a/app/src/main/res/drawable/emoji_shout_f5.png b/emojis/src/main/res/drawable/emoji_shout_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f5.png rename to emojis/src/main/res/drawable/emoji_shout_f5.png diff --git a/app/src/main/res/drawable/emoji_shout_f6.png b/emojis/src/main/res/drawable/emoji_shout_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f6.png rename to emojis/src/main/res/drawable/emoji_shout_f6.png diff --git a/app/src/main/res/drawable/emoji_shout_f7.png b/emojis/src/main/res/drawable/emoji_shout_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f7.png rename to emojis/src/main/res/drawable/emoji_shout_f7.png diff --git a/app/src/main/res/drawable/emoji_shout_f8.png b/emojis/src/main/res/drawable/emoji_shout_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f8.png rename to emojis/src/main/res/drawable/emoji_shout_f8.png diff --git a/app/src/main/res/drawable/emoji_shout_f9.png b/emojis/src/main/res/drawable/emoji_shout_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_shout_f9.png rename to emojis/src/main/res/drawable/emoji_shout_f9.png diff --git a/app/src/main/res/drawable/emoji_shy.png b/emojis/src/main/res/drawable/emoji_shy.png similarity index 100% rename from app/src/main/res/drawable/emoji_shy.png rename to emojis/src/main/res/drawable/emoji_shy.png diff --git a/app/src/main/res/drawable/emoji_sleep.xml b/emojis/src/main/res/drawable/emoji_sleep.xml similarity index 100% rename from app/src/main/res/drawable/emoji_sleep.xml rename to emojis/src/main/res/drawable/emoji_sleep.xml diff --git a/app/src/main/res/drawable/emoji_sleep_f0.png b/emojis/src/main/res/drawable/emoji_sleep_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_sleep_f0.png rename to emojis/src/main/res/drawable/emoji_sleep_f0.png diff --git a/app/src/main/res/drawable/emoji_sleep_f1.png b/emojis/src/main/res/drawable/emoji_sleep_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_sleep_f1.png rename to emojis/src/main/res/drawable/emoji_sleep_f1.png diff --git a/app/src/main/res/drawable/emoji_sleep_f2.png b/emojis/src/main/res/drawable/emoji_sleep_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_sleep_f2.png rename to emojis/src/main/res/drawable/emoji_sleep_f2.png diff --git a/app/src/main/res/drawable/emoji_sleep_f3.png b/emojis/src/main/res/drawable/emoji_sleep_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_sleep_f3.png rename to emojis/src/main/res/drawable/emoji_sleep_f3.png diff --git a/app/src/main/res/drawable/emoji_slurp.xml b/emojis/src/main/res/drawable/emoji_slurp.xml similarity index 100% rename from app/src/main/res/drawable/emoji_slurp.xml rename to emojis/src/main/res/drawable/emoji_slurp.xml diff --git a/app/src/main/res/drawable/emoji_slurp_f0.png b/emojis/src/main/res/drawable/emoji_slurp_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f0.png rename to emojis/src/main/res/drawable/emoji_slurp_f0.png diff --git a/app/src/main/res/drawable/emoji_slurp_f1.png b/emojis/src/main/res/drawable/emoji_slurp_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f1.png rename to emojis/src/main/res/drawable/emoji_slurp_f1.png diff --git a/app/src/main/res/drawable/emoji_slurp_f10.png b/emojis/src/main/res/drawable/emoji_slurp_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f10.png rename to emojis/src/main/res/drawable/emoji_slurp_f10.png diff --git a/app/src/main/res/drawable/emoji_slurp_f11.png b/emojis/src/main/res/drawable/emoji_slurp_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f11.png rename to emojis/src/main/res/drawable/emoji_slurp_f11.png diff --git a/app/src/main/res/drawable/emoji_slurp_f12.png b/emojis/src/main/res/drawable/emoji_slurp_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f12.png rename to emojis/src/main/res/drawable/emoji_slurp_f12.png diff --git a/app/src/main/res/drawable/emoji_slurp_f13.png b/emojis/src/main/res/drawable/emoji_slurp_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f13.png rename to emojis/src/main/res/drawable/emoji_slurp_f13.png diff --git a/app/src/main/res/drawable/emoji_slurp_f14.png b/emojis/src/main/res/drawable/emoji_slurp_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f14.png rename to emojis/src/main/res/drawable/emoji_slurp_f14.png diff --git a/app/src/main/res/drawable/emoji_slurp_f15.png b/emojis/src/main/res/drawable/emoji_slurp_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f15.png rename to emojis/src/main/res/drawable/emoji_slurp_f15.png diff --git a/app/src/main/res/drawable/emoji_slurp_f16.png b/emojis/src/main/res/drawable/emoji_slurp_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f16.png rename to emojis/src/main/res/drawable/emoji_slurp_f16.png diff --git a/app/src/main/res/drawable/emoji_slurp_f17.png b/emojis/src/main/res/drawable/emoji_slurp_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f17.png rename to emojis/src/main/res/drawable/emoji_slurp_f17.png diff --git a/app/src/main/res/drawable/emoji_slurp_f18.png b/emojis/src/main/res/drawable/emoji_slurp_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f18.png rename to emojis/src/main/res/drawable/emoji_slurp_f18.png diff --git a/app/src/main/res/drawable/emoji_slurp_f19.png b/emojis/src/main/res/drawable/emoji_slurp_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f19.png rename to emojis/src/main/res/drawable/emoji_slurp_f19.png diff --git a/app/src/main/res/drawable/emoji_slurp_f2.png b/emojis/src/main/res/drawable/emoji_slurp_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f2.png rename to emojis/src/main/res/drawable/emoji_slurp_f2.png diff --git a/app/src/main/res/drawable/emoji_slurp_f20.png b/emojis/src/main/res/drawable/emoji_slurp_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f20.png rename to emojis/src/main/res/drawable/emoji_slurp_f20.png diff --git a/app/src/main/res/drawable/emoji_slurp_f21.png b/emojis/src/main/res/drawable/emoji_slurp_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f21.png rename to emojis/src/main/res/drawable/emoji_slurp_f21.png diff --git a/app/src/main/res/drawable/emoji_slurp_f22.png b/emojis/src/main/res/drawable/emoji_slurp_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f22.png rename to emojis/src/main/res/drawable/emoji_slurp_f22.png diff --git a/app/src/main/res/drawable/emoji_slurp_f3.png b/emojis/src/main/res/drawable/emoji_slurp_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f3.png rename to emojis/src/main/res/drawable/emoji_slurp_f3.png diff --git a/app/src/main/res/drawable/emoji_slurp_f4.png b/emojis/src/main/res/drawable/emoji_slurp_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f4.png rename to emojis/src/main/res/drawable/emoji_slurp_f4.png diff --git a/app/src/main/res/drawable/emoji_slurp_f5.png b/emojis/src/main/res/drawable/emoji_slurp_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f5.png rename to emojis/src/main/res/drawable/emoji_slurp_f5.png diff --git a/app/src/main/res/drawable/emoji_slurp_f6.png b/emojis/src/main/res/drawable/emoji_slurp_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f6.png rename to emojis/src/main/res/drawable/emoji_slurp_f6.png diff --git a/app/src/main/res/drawable/emoji_slurp_f7.png b/emojis/src/main/res/drawable/emoji_slurp_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f7.png rename to emojis/src/main/res/drawable/emoji_slurp_f7.png diff --git a/app/src/main/res/drawable/emoji_slurp_f8.png b/emojis/src/main/res/drawable/emoji_slurp_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f8.png rename to emojis/src/main/res/drawable/emoji_slurp_f8.png diff --git a/app/src/main/res/drawable/emoji_slurp_f9.png b/emojis/src/main/res/drawable/emoji_slurp_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_slurp_f9.png rename to emojis/src/main/res/drawable/emoji_slurp_f9.png diff --git a/app/src/main/res/drawable/emoji_smiley.xml b/emojis/src/main/res/drawable/emoji_smiley.xml similarity index 100% rename from app/src/main/res/drawable/emoji_smiley.xml rename to emojis/src/main/res/drawable/emoji_smiley.xml diff --git a/app/src/main/res/drawable/emoji_smiley_f0.png b/emojis/src/main/res/drawable/emoji_smiley_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_smiley_f0.png rename to emojis/src/main/res/drawable/emoji_smiley_f0.png diff --git a/app/src/main/res/drawable/emoji_smiley_f1.png b/emojis/src/main/res/drawable/emoji_smiley_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_smiley_f1.png rename to emojis/src/main/res/drawable/emoji_smiley_f1.png diff --git a/app/src/main/res/drawable/emoji_smiley_f2.png b/emojis/src/main/res/drawable/emoji_smiley_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_smiley_f2.png rename to emojis/src/main/res/drawable/emoji_smiley_f2.png diff --git a/app/src/main/res/drawable/emoji_smiley_f3.png b/emojis/src/main/res/drawable/emoji_smiley_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_smiley_f3.png rename to emojis/src/main/res/drawable/emoji_smiley_f3.png diff --git a/app/src/main/res/drawable/emoji_smurf.xml b/emojis/src/main/res/drawable/emoji_smurf.xml similarity index 100% rename from app/src/main/res/drawable/emoji_smurf.xml rename to emojis/src/main/res/drawable/emoji_smurf.xml diff --git a/app/src/main/res/drawable/emoji_smurf_f0.png b/emojis/src/main/res/drawable/emoji_smurf_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_smurf_f0.png rename to emojis/src/main/res/drawable/emoji_smurf_f0.png diff --git a/app/src/main/res/drawable/emoji_spam2.xml b/emojis/src/main/res/drawable/emoji_spam2.xml similarity index 100% rename from app/src/main/res/drawable/emoji_spam2.xml rename to emojis/src/main/res/drawable/emoji_spam2.xml diff --git a/app/src/main/res/drawable/emoji_spam2_f0.png b/emojis/src/main/res/drawable/emoji_spam2_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_spam2_f0.png rename to emojis/src/main/res/drawable/emoji_spam2_f0.png diff --git a/app/src/main/res/drawable/emoji_spam2_f1.png b/emojis/src/main/res/drawable/emoji_spam2_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_spam2_f1.png rename to emojis/src/main/res/drawable/emoji_spam2_f1.png diff --git a/app/src/main/res/drawable/emoji_spam2_f2.png b/emojis/src/main/res/drawable/emoji_spam2_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_spam2_f2.png rename to emojis/src/main/res/drawable/emoji_spam2_f2.png diff --git a/app/src/main/res/drawable/emoji_spam2_f3.png b/emojis/src/main/res/drawable/emoji_spam2_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_spam2_f3.png rename to emojis/src/main/res/drawable/emoji_spam2_f3.png diff --git a/app/src/main/res/drawable/emoji_speech.xml b/emojis/src/main/res/drawable/emoji_speech.xml similarity index 100% rename from app/src/main/res/drawable/emoji_speech.xml rename to emojis/src/main/res/drawable/emoji_speech.xml diff --git a/app/src/main/res/drawable/emoji_speech_f0.png b/emojis/src/main/res/drawable/emoji_speech_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_speech_f0.png rename to emojis/src/main/res/drawable/emoji_speech_f0.png diff --git a/app/src/main/res/drawable/emoji_superconfused.xml b/emojis/src/main/res/drawable/emoji_superconfused.xml similarity index 100% rename from app/src/main/res/drawable/emoji_superconfused.xml rename to emojis/src/main/res/drawable/emoji_superconfused.xml diff --git a/app/src/main/res/drawable/emoji_superconfused_f0.png b/emojis/src/main/res/drawable/emoji_superconfused_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_superconfused_f0.png rename to emojis/src/main/res/drawable/emoji_superconfused_f0.png diff --git a/app/src/main/res/drawable/emoji_superconfused_f1.png b/emojis/src/main/res/drawable/emoji_superconfused_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_superconfused_f1.png rename to emojis/src/main/res/drawable/emoji_superconfused_f1.png diff --git a/app/src/main/res/drawable/emoji_superconfused_f2.png b/emojis/src/main/res/drawable/emoji_superconfused_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_superconfused_f2.png rename to emojis/src/main/res/drawable/emoji_superconfused_f2.png diff --git a/app/src/main/res/drawable/emoji_superinnocent.xml b/emojis/src/main/res/drawable/emoji_superinnocent.xml similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent.xml rename to emojis/src/main/res/drawable/emoji_superinnocent.xml diff --git a/app/src/main/res/drawable/emoji_superinnocent_f0.png b/emojis/src/main/res/drawable/emoji_superinnocent_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f0.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f0.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f1.png b/emojis/src/main/res/drawable/emoji_superinnocent_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f1.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f1.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f10.png b/emojis/src/main/res/drawable/emoji_superinnocent_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f10.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f10.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f11.png b/emojis/src/main/res/drawable/emoji_superinnocent_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f11.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f11.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f12.png b/emojis/src/main/res/drawable/emoji_superinnocent_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f12.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f12.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f13.png b/emojis/src/main/res/drawable/emoji_superinnocent_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f13.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f13.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f14.png b/emojis/src/main/res/drawable/emoji_superinnocent_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f14.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f14.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f15.png b/emojis/src/main/res/drawable/emoji_superinnocent_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f15.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f15.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f16.png b/emojis/src/main/res/drawable/emoji_superinnocent_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f16.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f16.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f17.png b/emojis/src/main/res/drawable/emoji_superinnocent_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f17.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f17.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f18.png b/emojis/src/main/res/drawable/emoji_superinnocent_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f18.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f18.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f2.png b/emojis/src/main/res/drawable/emoji_superinnocent_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f2.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f2.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f3.png b/emojis/src/main/res/drawable/emoji_superinnocent_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f3.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f3.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f4.png b/emojis/src/main/res/drawable/emoji_superinnocent_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f4.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f4.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f5.png b/emojis/src/main/res/drawable/emoji_superinnocent_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f5.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f5.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f6.png b/emojis/src/main/res/drawable/emoji_superinnocent_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f6.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f6.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f7.png b/emojis/src/main/res/drawable/emoji_superinnocent_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f7.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f7.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f8.png b/emojis/src/main/res/drawable/emoji_superinnocent_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f8.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f8.png diff --git a/app/src/main/res/drawable/emoji_superinnocent_f9.png b/emojis/src/main/res/drawable/emoji_superinnocent_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_superinnocent_f9.png rename to emojis/src/main/res/drawable/emoji_superinnocent_f9.png diff --git a/app/src/main/res/drawable/emoji_suspicious.xml b/emojis/src/main/res/drawable/emoji_suspicious.xml similarity index 100% rename from app/src/main/res/drawable/emoji_suspicious.xml rename to emojis/src/main/res/drawable/emoji_suspicious.xml diff --git a/app/src/main/res/drawable/emoji_suspicious_f0.png b/emojis/src/main/res/drawable/emoji_suspicious_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_suspicious_f0.png rename to emojis/src/main/res/drawable/emoji_suspicious_f0.png diff --git a/app/src/main/res/drawable/emoji_suspicious_f1.png b/emojis/src/main/res/drawable/emoji_suspicious_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_suspicious_f1.png rename to emojis/src/main/res/drawable/emoji_suspicious_f1.png diff --git a/app/src/main/res/drawable/emoji_tafos.xml b/emojis/src/main/res/drawable/emoji_tafos.xml similarity index 100% rename from app/src/main/res/drawable/emoji_tafos.xml rename to emojis/src/main/res/drawable/emoji_tafos.xml diff --git a/app/src/main/res/drawable/emoji_tafos_f0.png b/emojis/src/main/res/drawable/emoji_tafos_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f0.png rename to emojis/src/main/res/drawable/emoji_tafos_f0.png diff --git a/app/src/main/res/drawable/emoji_tafos_f1.png b/emojis/src/main/res/drawable/emoji_tafos_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f1.png rename to emojis/src/main/res/drawable/emoji_tafos_f1.png diff --git a/app/src/main/res/drawable/emoji_tafos_f10.png b/emojis/src/main/res/drawable/emoji_tafos_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f10.png rename to emojis/src/main/res/drawable/emoji_tafos_f10.png diff --git a/app/src/main/res/drawable/emoji_tafos_f11.png b/emojis/src/main/res/drawable/emoji_tafos_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f11.png rename to emojis/src/main/res/drawable/emoji_tafos_f11.png diff --git a/app/src/main/res/drawable/emoji_tafos_f12.png b/emojis/src/main/res/drawable/emoji_tafos_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f12.png rename to emojis/src/main/res/drawable/emoji_tafos_f12.png diff --git a/app/src/main/res/drawable/emoji_tafos_f13.png b/emojis/src/main/res/drawable/emoji_tafos_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f13.png rename to emojis/src/main/res/drawable/emoji_tafos_f13.png diff --git a/app/src/main/res/drawable/emoji_tafos_f14.png b/emojis/src/main/res/drawable/emoji_tafos_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f14.png rename to emojis/src/main/res/drawable/emoji_tafos_f14.png diff --git a/app/src/main/res/drawable/emoji_tafos_f15.png b/emojis/src/main/res/drawable/emoji_tafos_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f15.png rename to emojis/src/main/res/drawable/emoji_tafos_f15.png diff --git a/app/src/main/res/drawable/emoji_tafos_f16.png b/emojis/src/main/res/drawable/emoji_tafos_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f16.png rename to emojis/src/main/res/drawable/emoji_tafos_f16.png diff --git a/app/src/main/res/drawable/emoji_tafos_f17.png b/emojis/src/main/res/drawable/emoji_tafos_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f17.png rename to emojis/src/main/res/drawable/emoji_tafos_f17.png diff --git a/app/src/main/res/drawable/emoji_tafos_f18.png b/emojis/src/main/res/drawable/emoji_tafos_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f18.png rename to emojis/src/main/res/drawable/emoji_tafos_f18.png diff --git a/app/src/main/res/drawable/emoji_tafos_f19.png b/emojis/src/main/res/drawable/emoji_tafos_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f19.png rename to emojis/src/main/res/drawable/emoji_tafos_f19.png diff --git a/app/src/main/res/drawable/emoji_tafos_f2.png b/emojis/src/main/res/drawable/emoji_tafos_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f2.png rename to emojis/src/main/res/drawable/emoji_tafos_f2.png diff --git a/app/src/main/res/drawable/emoji_tafos_f20.png b/emojis/src/main/res/drawable/emoji_tafos_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f20.png rename to emojis/src/main/res/drawable/emoji_tafos_f20.png diff --git a/app/src/main/res/drawable/emoji_tafos_f21.png b/emojis/src/main/res/drawable/emoji_tafos_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f21.png rename to emojis/src/main/res/drawable/emoji_tafos_f21.png diff --git a/app/src/main/res/drawable/emoji_tafos_f22.png b/emojis/src/main/res/drawable/emoji_tafos_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f22.png rename to emojis/src/main/res/drawable/emoji_tafos_f22.png diff --git a/app/src/main/res/drawable/emoji_tafos_f23.png b/emojis/src/main/res/drawable/emoji_tafos_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f23.png rename to emojis/src/main/res/drawable/emoji_tafos_f23.png diff --git a/app/src/main/res/drawable/emoji_tafos_f24.png b/emojis/src/main/res/drawable/emoji_tafos_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f24.png rename to emojis/src/main/res/drawable/emoji_tafos_f24.png diff --git a/app/src/main/res/drawable/emoji_tafos_f25.png b/emojis/src/main/res/drawable/emoji_tafos_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f25.png rename to emojis/src/main/res/drawable/emoji_tafos_f25.png diff --git a/app/src/main/res/drawable/emoji_tafos_f26.png b/emojis/src/main/res/drawable/emoji_tafos_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f26.png rename to emojis/src/main/res/drawable/emoji_tafos_f26.png diff --git a/app/src/main/res/drawable/emoji_tafos_f27.png b/emojis/src/main/res/drawable/emoji_tafos_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f27.png rename to emojis/src/main/res/drawable/emoji_tafos_f27.png diff --git a/app/src/main/res/drawable/emoji_tafos_f28.png b/emojis/src/main/res/drawable/emoji_tafos_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f28.png rename to emojis/src/main/res/drawable/emoji_tafos_f28.png diff --git a/app/src/main/res/drawable/emoji_tafos_f29.png b/emojis/src/main/res/drawable/emoji_tafos_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f29.png rename to emojis/src/main/res/drawable/emoji_tafos_f29.png diff --git a/app/src/main/res/drawable/emoji_tafos_f3.png b/emojis/src/main/res/drawable/emoji_tafos_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f3.png rename to emojis/src/main/res/drawable/emoji_tafos_f3.png diff --git a/app/src/main/res/drawable/emoji_tafos_f30.png b/emojis/src/main/res/drawable/emoji_tafos_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f30.png rename to emojis/src/main/res/drawable/emoji_tafos_f30.png diff --git a/app/src/main/res/drawable/emoji_tafos_f31.png b/emojis/src/main/res/drawable/emoji_tafos_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f31.png rename to emojis/src/main/res/drawable/emoji_tafos_f31.png diff --git a/app/src/main/res/drawable/emoji_tafos_f32.png b/emojis/src/main/res/drawable/emoji_tafos_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f32.png rename to emojis/src/main/res/drawable/emoji_tafos_f32.png diff --git a/app/src/main/res/drawable/emoji_tafos_f33.png b/emojis/src/main/res/drawable/emoji_tafos_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f33.png rename to emojis/src/main/res/drawable/emoji_tafos_f33.png diff --git a/app/src/main/res/drawable/emoji_tafos_f34.png b/emojis/src/main/res/drawable/emoji_tafos_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f34.png rename to emojis/src/main/res/drawable/emoji_tafos_f34.png diff --git a/app/src/main/res/drawable/emoji_tafos_f35.png b/emojis/src/main/res/drawable/emoji_tafos_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f35.png rename to emojis/src/main/res/drawable/emoji_tafos_f35.png diff --git a/app/src/main/res/drawable/emoji_tafos_f36.png b/emojis/src/main/res/drawable/emoji_tafos_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f36.png rename to emojis/src/main/res/drawable/emoji_tafos_f36.png diff --git a/app/src/main/res/drawable/emoji_tafos_f37.png b/emojis/src/main/res/drawable/emoji_tafos_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f37.png rename to emojis/src/main/res/drawable/emoji_tafos_f37.png diff --git a/app/src/main/res/drawable/emoji_tafos_f38.png b/emojis/src/main/res/drawable/emoji_tafos_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f38.png rename to emojis/src/main/res/drawable/emoji_tafos_f38.png diff --git a/app/src/main/res/drawable/emoji_tafos_f39.png b/emojis/src/main/res/drawable/emoji_tafos_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f39.png rename to emojis/src/main/res/drawable/emoji_tafos_f39.png diff --git a/app/src/main/res/drawable/emoji_tafos_f4.png b/emojis/src/main/res/drawable/emoji_tafos_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f4.png rename to emojis/src/main/res/drawable/emoji_tafos_f4.png diff --git a/app/src/main/res/drawable/emoji_tafos_f40.png b/emojis/src/main/res/drawable/emoji_tafos_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f40.png rename to emojis/src/main/res/drawable/emoji_tafos_f40.png diff --git a/app/src/main/res/drawable/emoji_tafos_f41.png b/emojis/src/main/res/drawable/emoji_tafos_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f41.png rename to emojis/src/main/res/drawable/emoji_tafos_f41.png diff --git a/app/src/main/res/drawable/emoji_tafos_f42.png b/emojis/src/main/res/drawable/emoji_tafos_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f42.png rename to emojis/src/main/res/drawable/emoji_tafos_f42.png diff --git a/app/src/main/res/drawable/emoji_tafos_f5.png b/emojis/src/main/res/drawable/emoji_tafos_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f5.png rename to emojis/src/main/res/drawable/emoji_tafos_f5.png diff --git a/app/src/main/res/drawable/emoji_tafos_f6.png b/emojis/src/main/res/drawable/emoji_tafos_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f6.png rename to emojis/src/main/res/drawable/emoji_tafos_f6.png diff --git a/app/src/main/res/drawable/emoji_tafos_f7.png b/emojis/src/main/res/drawable/emoji_tafos_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f7.png rename to emojis/src/main/res/drawable/emoji_tafos_f7.png diff --git a/app/src/main/res/drawable/emoji_tafos_f8.png b/emojis/src/main/res/drawable/emoji_tafos_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f8.png rename to emojis/src/main/res/drawable/emoji_tafos_f8.png diff --git a/app/src/main/res/drawable/emoji_tafos_f9.png b/emojis/src/main/res/drawable/emoji_tafos_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_tafos_f9.png rename to emojis/src/main/res/drawable/emoji_tafos_f9.png diff --git a/app/src/main/res/drawable/emoji_tickedoff.xml b/emojis/src/main/res/drawable/emoji_tickedoff.xml similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff.xml rename to emojis/src/main/res/drawable/emoji_tickedoff.xml diff --git a/app/src/main/res/drawable/emoji_tickedoff_f0.png b/emojis/src/main/res/drawable/emoji_tickedoff_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f0.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f0.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f1.png b/emojis/src/main/res/drawable/emoji_tickedoff_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f1.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f1.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f10.png b/emojis/src/main/res/drawable/emoji_tickedoff_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f10.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f10.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f100.png b/emojis/src/main/res/drawable/emoji_tickedoff_f100.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f100.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f100.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f101.png b/emojis/src/main/res/drawable/emoji_tickedoff_f101.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f101.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f101.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f102.png b/emojis/src/main/res/drawable/emoji_tickedoff_f102.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f102.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f102.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f103.png b/emojis/src/main/res/drawable/emoji_tickedoff_f103.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f103.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f103.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f104.png b/emojis/src/main/res/drawable/emoji_tickedoff_f104.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f104.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f104.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f105.png b/emojis/src/main/res/drawable/emoji_tickedoff_f105.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f105.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f105.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f106.png b/emojis/src/main/res/drawable/emoji_tickedoff_f106.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f106.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f106.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f107.png b/emojis/src/main/res/drawable/emoji_tickedoff_f107.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f107.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f107.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f108.png b/emojis/src/main/res/drawable/emoji_tickedoff_f108.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f108.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f108.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f109.png b/emojis/src/main/res/drawable/emoji_tickedoff_f109.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f109.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f109.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f11.png b/emojis/src/main/res/drawable/emoji_tickedoff_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f11.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f11.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f110.png b/emojis/src/main/res/drawable/emoji_tickedoff_f110.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f110.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f110.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f111.png b/emojis/src/main/res/drawable/emoji_tickedoff_f111.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f111.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f111.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f112.png b/emojis/src/main/res/drawable/emoji_tickedoff_f112.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f112.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f112.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f113.png b/emojis/src/main/res/drawable/emoji_tickedoff_f113.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f113.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f113.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f114.png b/emojis/src/main/res/drawable/emoji_tickedoff_f114.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f114.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f114.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f115.png b/emojis/src/main/res/drawable/emoji_tickedoff_f115.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f115.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f115.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f116.png b/emojis/src/main/res/drawable/emoji_tickedoff_f116.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f116.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f116.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f117.png b/emojis/src/main/res/drawable/emoji_tickedoff_f117.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f117.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f117.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f118.png b/emojis/src/main/res/drawable/emoji_tickedoff_f118.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f118.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f118.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f119.png b/emojis/src/main/res/drawable/emoji_tickedoff_f119.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f119.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f119.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f12.png b/emojis/src/main/res/drawable/emoji_tickedoff_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f12.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f12.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f120.png b/emojis/src/main/res/drawable/emoji_tickedoff_f120.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f120.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f120.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f121.png b/emojis/src/main/res/drawable/emoji_tickedoff_f121.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f121.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f121.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f122.png b/emojis/src/main/res/drawable/emoji_tickedoff_f122.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f122.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f122.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f123.png b/emojis/src/main/res/drawable/emoji_tickedoff_f123.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f123.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f123.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f124.png b/emojis/src/main/res/drawable/emoji_tickedoff_f124.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f124.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f124.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f125.png b/emojis/src/main/res/drawable/emoji_tickedoff_f125.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f125.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f125.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f126.png b/emojis/src/main/res/drawable/emoji_tickedoff_f126.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f126.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f126.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f127.png b/emojis/src/main/res/drawable/emoji_tickedoff_f127.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f127.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f127.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f128.png b/emojis/src/main/res/drawable/emoji_tickedoff_f128.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f128.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f128.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f129.png b/emojis/src/main/res/drawable/emoji_tickedoff_f129.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f129.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f129.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f13.png b/emojis/src/main/res/drawable/emoji_tickedoff_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f13.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f13.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f130.png b/emojis/src/main/res/drawable/emoji_tickedoff_f130.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f130.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f130.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f131.png b/emojis/src/main/res/drawable/emoji_tickedoff_f131.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f131.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f131.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f132.png b/emojis/src/main/res/drawable/emoji_tickedoff_f132.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f132.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f132.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f133.png b/emojis/src/main/res/drawable/emoji_tickedoff_f133.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f133.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f133.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f134.png b/emojis/src/main/res/drawable/emoji_tickedoff_f134.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f134.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f134.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f135.png b/emojis/src/main/res/drawable/emoji_tickedoff_f135.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f135.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f135.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f136.png b/emojis/src/main/res/drawable/emoji_tickedoff_f136.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f136.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f136.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f137.png b/emojis/src/main/res/drawable/emoji_tickedoff_f137.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f137.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f137.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f138.png b/emojis/src/main/res/drawable/emoji_tickedoff_f138.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f138.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f138.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f139.png b/emojis/src/main/res/drawable/emoji_tickedoff_f139.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f139.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f139.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f14.png b/emojis/src/main/res/drawable/emoji_tickedoff_f14.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f14.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f14.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f140.png b/emojis/src/main/res/drawable/emoji_tickedoff_f140.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f140.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f140.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f141.png b/emojis/src/main/res/drawable/emoji_tickedoff_f141.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f141.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f141.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f142.png b/emojis/src/main/res/drawable/emoji_tickedoff_f142.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f142.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f142.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f143.png b/emojis/src/main/res/drawable/emoji_tickedoff_f143.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f143.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f143.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f144.png b/emojis/src/main/res/drawable/emoji_tickedoff_f144.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f144.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f144.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f145.png b/emojis/src/main/res/drawable/emoji_tickedoff_f145.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f145.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f145.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f146.png b/emojis/src/main/res/drawable/emoji_tickedoff_f146.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f146.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f146.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f147.png b/emojis/src/main/res/drawable/emoji_tickedoff_f147.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f147.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f147.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f148.png b/emojis/src/main/res/drawable/emoji_tickedoff_f148.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f148.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f148.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f149.png b/emojis/src/main/res/drawable/emoji_tickedoff_f149.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f149.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f149.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f15.png b/emojis/src/main/res/drawable/emoji_tickedoff_f15.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f15.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f15.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f150.png b/emojis/src/main/res/drawable/emoji_tickedoff_f150.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f150.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f150.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f151.png b/emojis/src/main/res/drawable/emoji_tickedoff_f151.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f151.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f151.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f152.png b/emojis/src/main/res/drawable/emoji_tickedoff_f152.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f152.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f152.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f153.png b/emojis/src/main/res/drawable/emoji_tickedoff_f153.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f153.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f153.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f154.png b/emojis/src/main/res/drawable/emoji_tickedoff_f154.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f154.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f154.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f155.png b/emojis/src/main/res/drawable/emoji_tickedoff_f155.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f155.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f155.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f156.png b/emojis/src/main/res/drawable/emoji_tickedoff_f156.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f156.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f156.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f157.png b/emojis/src/main/res/drawable/emoji_tickedoff_f157.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f157.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f157.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f158.png b/emojis/src/main/res/drawable/emoji_tickedoff_f158.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f158.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f158.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f159.png b/emojis/src/main/res/drawable/emoji_tickedoff_f159.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f159.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f159.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f16.png b/emojis/src/main/res/drawable/emoji_tickedoff_f16.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f16.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f16.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f160.png b/emojis/src/main/res/drawable/emoji_tickedoff_f160.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f160.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f160.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f161.png b/emojis/src/main/res/drawable/emoji_tickedoff_f161.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f161.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f161.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f162.png b/emojis/src/main/res/drawable/emoji_tickedoff_f162.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f162.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f162.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f163.png b/emojis/src/main/res/drawable/emoji_tickedoff_f163.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f163.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f163.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f164.png b/emojis/src/main/res/drawable/emoji_tickedoff_f164.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f164.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f164.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f165.png b/emojis/src/main/res/drawable/emoji_tickedoff_f165.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f165.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f165.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f166.png b/emojis/src/main/res/drawable/emoji_tickedoff_f166.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f166.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f166.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f167.png b/emojis/src/main/res/drawable/emoji_tickedoff_f167.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f167.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f167.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f17.png b/emojis/src/main/res/drawable/emoji_tickedoff_f17.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f17.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f17.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f18.png b/emojis/src/main/res/drawable/emoji_tickedoff_f18.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f18.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f18.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f19.png b/emojis/src/main/res/drawable/emoji_tickedoff_f19.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f19.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f19.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f2.png b/emojis/src/main/res/drawable/emoji_tickedoff_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f2.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f2.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f20.png b/emojis/src/main/res/drawable/emoji_tickedoff_f20.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f20.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f20.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f21.png b/emojis/src/main/res/drawable/emoji_tickedoff_f21.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f21.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f21.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f22.png b/emojis/src/main/res/drawable/emoji_tickedoff_f22.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f22.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f22.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f23.png b/emojis/src/main/res/drawable/emoji_tickedoff_f23.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f23.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f23.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f24.png b/emojis/src/main/res/drawable/emoji_tickedoff_f24.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f24.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f24.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f25.png b/emojis/src/main/res/drawable/emoji_tickedoff_f25.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f25.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f25.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f26.png b/emojis/src/main/res/drawable/emoji_tickedoff_f26.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f26.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f26.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f27.png b/emojis/src/main/res/drawable/emoji_tickedoff_f27.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f27.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f27.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f28.png b/emojis/src/main/res/drawable/emoji_tickedoff_f28.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f28.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f28.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f29.png b/emojis/src/main/res/drawable/emoji_tickedoff_f29.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f29.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f29.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f3.png b/emojis/src/main/res/drawable/emoji_tickedoff_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f3.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f3.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f30.png b/emojis/src/main/res/drawable/emoji_tickedoff_f30.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f30.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f30.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f31.png b/emojis/src/main/res/drawable/emoji_tickedoff_f31.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f31.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f31.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f32.png b/emojis/src/main/res/drawable/emoji_tickedoff_f32.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f32.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f32.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f33.png b/emojis/src/main/res/drawable/emoji_tickedoff_f33.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f33.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f33.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f34.png b/emojis/src/main/res/drawable/emoji_tickedoff_f34.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f34.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f34.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f35.png b/emojis/src/main/res/drawable/emoji_tickedoff_f35.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f35.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f35.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f36.png b/emojis/src/main/res/drawable/emoji_tickedoff_f36.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f36.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f36.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f37.png b/emojis/src/main/res/drawable/emoji_tickedoff_f37.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f37.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f37.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f38.png b/emojis/src/main/res/drawable/emoji_tickedoff_f38.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f38.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f38.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f39.png b/emojis/src/main/res/drawable/emoji_tickedoff_f39.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f39.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f39.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f4.png b/emojis/src/main/res/drawable/emoji_tickedoff_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f4.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f4.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f40.png b/emojis/src/main/res/drawable/emoji_tickedoff_f40.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f40.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f40.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f41.png b/emojis/src/main/res/drawable/emoji_tickedoff_f41.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f41.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f41.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f42.png b/emojis/src/main/res/drawable/emoji_tickedoff_f42.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f42.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f42.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f43.png b/emojis/src/main/res/drawable/emoji_tickedoff_f43.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f43.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f43.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f44.png b/emojis/src/main/res/drawable/emoji_tickedoff_f44.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f44.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f44.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f45.png b/emojis/src/main/res/drawable/emoji_tickedoff_f45.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f45.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f45.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f46.png b/emojis/src/main/res/drawable/emoji_tickedoff_f46.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f46.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f46.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f47.png b/emojis/src/main/res/drawable/emoji_tickedoff_f47.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f47.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f47.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f48.png b/emojis/src/main/res/drawable/emoji_tickedoff_f48.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f48.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f48.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f49.png b/emojis/src/main/res/drawable/emoji_tickedoff_f49.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f49.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f49.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f5.png b/emojis/src/main/res/drawable/emoji_tickedoff_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f5.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f5.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f50.png b/emojis/src/main/res/drawable/emoji_tickedoff_f50.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f50.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f50.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f51.png b/emojis/src/main/res/drawable/emoji_tickedoff_f51.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f51.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f51.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f52.png b/emojis/src/main/res/drawable/emoji_tickedoff_f52.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f52.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f52.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f53.png b/emojis/src/main/res/drawable/emoji_tickedoff_f53.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f53.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f53.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f54.png b/emojis/src/main/res/drawable/emoji_tickedoff_f54.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f54.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f54.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f55.png b/emojis/src/main/res/drawable/emoji_tickedoff_f55.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f55.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f55.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f56.png b/emojis/src/main/res/drawable/emoji_tickedoff_f56.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f56.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f56.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f57.png b/emojis/src/main/res/drawable/emoji_tickedoff_f57.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f57.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f57.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f58.png b/emojis/src/main/res/drawable/emoji_tickedoff_f58.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f58.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f58.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f59.png b/emojis/src/main/res/drawable/emoji_tickedoff_f59.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f59.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f59.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f6.png b/emojis/src/main/res/drawable/emoji_tickedoff_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f6.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f6.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f60.png b/emojis/src/main/res/drawable/emoji_tickedoff_f60.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f60.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f60.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f61.png b/emojis/src/main/res/drawable/emoji_tickedoff_f61.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f61.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f61.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f62.png b/emojis/src/main/res/drawable/emoji_tickedoff_f62.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f62.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f62.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f63.png b/emojis/src/main/res/drawable/emoji_tickedoff_f63.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f63.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f63.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f64.png b/emojis/src/main/res/drawable/emoji_tickedoff_f64.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f64.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f64.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f65.png b/emojis/src/main/res/drawable/emoji_tickedoff_f65.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f65.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f65.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f66.png b/emojis/src/main/res/drawable/emoji_tickedoff_f66.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f66.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f66.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f67.png b/emojis/src/main/res/drawable/emoji_tickedoff_f67.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f67.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f67.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f68.png b/emojis/src/main/res/drawable/emoji_tickedoff_f68.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f68.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f68.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f69.png b/emojis/src/main/res/drawable/emoji_tickedoff_f69.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f69.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f69.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f7.png b/emojis/src/main/res/drawable/emoji_tickedoff_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f7.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f7.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f70.png b/emojis/src/main/res/drawable/emoji_tickedoff_f70.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f70.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f70.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f71.png b/emojis/src/main/res/drawable/emoji_tickedoff_f71.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f71.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f71.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f72.png b/emojis/src/main/res/drawable/emoji_tickedoff_f72.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f72.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f72.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f73.png b/emojis/src/main/res/drawable/emoji_tickedoff_f73.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f73.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f73.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f74.png b/emojis/src/main/res/drawable/emoji_tickedoff_f74.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f74.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f74.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f75.png b/emojis/src/main/res/drawable/emoji_tickedoff_f75.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f75.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f75.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f76.png b/emojis/src/main/res/drawable/emoji_tickedoff_f76.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f76.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f76.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f77.png b/emojis/src/main/res/drawable/emoji_tickedoff_f77.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f77.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f77.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f78.png b/emojis/src/main/res/drawable/emoji_tickedoff_f78.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f78.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f78.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f79.png b/emojis/src/main/res/drawable/emoji_tickedoff_f79.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f79.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f79.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f8.png b/emojis/src/main/res/drawable/emoji_tickedoff_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f8.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f8.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f80.png b/emojis/src/main/res/drawable/emoji_tickedoff_f80.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f80.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f80.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f81.png b/emojis/src/main/res/drawable/emoji_tickedoff_f81.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f81.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f81.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f82.png b/emojis/src/main/res/drawable/emoji_tickedoff_f82.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f82.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f82.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f83.png b/emojis/src/main/res/drawable/emoji_tickedoff_f83.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f83.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f83.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f84.png b/emojis/src/main/res/drawable/emoji_tickedoff_f84.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f84.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f84.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f85.png b/emojis/src/main/res/drawable/emoji_tickedoff_f85.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f85.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f85.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f86.png b/emojis/src/main/res/drawable/emoji_tickedoff_f86.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f86.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f86.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f87.png b/emojis/src/main/res/drawable/emoji_tickedoff_f87.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f87.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f87.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f88.png b/emojis/src/main/res/drawable/emoji_tickedoff_f88.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f88.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f88.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f89.png b/emojis/src/main/res/drawable/emoji_tickedoff_f89.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f89.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f89.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f9.png b/emojis/src/main/res/drawable/emoji_tickedoff_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f9.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f9.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f90.png b/emojis/src/main/res/drawable/emoji_tickedoff_f90.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f90.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f90.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f91.png b/emojis/src/main/res/drawable/emoji_tickedoff_f91.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f91.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f91.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f92.png b/emojis/src/main/res/drawable/emoji_tickedoff_f92.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f92.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f92.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f93.png b/emojis/src/main/res/drawable/emoji_tickedoff_f93.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f93.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f93.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f94.png b/emojis/src/main/res/drawable/emoji_tickedoff_f94.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f94.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f94.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f95.png b/emojis/src/main/res/drawable/emoji_tickedoff_f95.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f95.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f95.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f96.png b/emojis/src/main/res/drawable/emoji_tickedoff_f96.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f96.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f96.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f97.png b/emojis/src/main/res/drawable/emoji_tickedoff_f97.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f97.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f97.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f98.png b/emojis/src/main/res/drawable/emoji_tickedoff_f98.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f98.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f98.png diff --git a/app/src/main/res/drawable/emoji_tickedoff_f99.png b/emojis/src/main/res/drawable/emoji_tickedoff_f99.png similarity index 100% rename from app/src/main/res/drawable/emoji_tickedoff_f99.png rename to emojis/src/main/res/drawable/emoji_tickedoff_f99.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh.xml b/emojis/src/main/res/drawable/emoji_tomatomourh.xml similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh.xml rename to emojis/src/main/res/drawable/emoji_tomatomourh.xml diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f0.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f0.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f0.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f1.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f1.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f1.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f10.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f10.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f10.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f11.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f11.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f11.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f2.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f2.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f2.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f3.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f3.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f3.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f4.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f4.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f4.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f5.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f5.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f5.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f6.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f6.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f6.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f7.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f7.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f7.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f8.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f8.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f8.png diff --git a/app/src/main/res/drawable/emoji_tomatomourh_f9.png b/emojis/src/main/res/drawable/emoji_tomatomourh_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_tomatomourh_f9.png rename to emojis/src/main/res/drawable/emoji_tomatomourh_f9.png diff --git a/app/src/main/res/drawable/emoji_tongue.xml b/emojis/src/main/res/drawable/emoji_tongue.xml similarity index 100% rename from app/src/main/res/drawable/emoji_tongue.xml rename to emojis/src/main/res/drawable/emoji_tongue.xml diff --git a/app/src/main/res/drawable/emoji_tongue_f0.png b/emojis/src/main/res/drawable/emoji_tongue_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f0.png rename to emojis/src/main/res/drawable/emoji_tongue_f0.png diff --git a/app/src/main/res/drawable/emoji_tongue_f1.png b/emojis/src/main/res/drawable/emoji_tongue_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f1.png rename to emojis/src/main/res/drawable/emoji_tongue_f1.png diff --git a/app/src/main/res/drawable/emoji_tongue_f2.png b/emojis/src/main/res/drawable/emoji_tongue_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f2.png rename to emojis/src/main/res/drawable/emoji_tongue_f2.png diff --git a/app/src/main/res/drawable/emoji_tongue_f3.png b/emojis/src/main/res/drawable/emoji_tongue_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f3.png rename to emojis/src/main/res/drawable/emoji_tongue_f3.png diff --git a/app/src/main/res/drawable/emoji_tongue_f4.png b/emojis/src/main/res/drawable/emoji_tongue_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f4.png rename to emojis/src/main/res/drawable/emoji_tongue_f4.png diff --git a/app/src/main/res/drawable/emoji_tongue_f5.png b/emojis/src/main/res/drawable/emoji_tongue_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_tongue_f5.png rename to emojis/src/main/res/drawable/emoji_tongue_f5.png diff --git a/app/src/main/res/drawable/emoji_undecided.xml b/emojis/src/main/res/drawable/emoji_undecided.xml similarity index 100% rename from app/src/main/res/drawable/emoji_undecided.xml rename to emojis/src/main/res/drawable/emoji_undecided.xml diff --git a/app/src/main/res/drawable/emoji_undecided_f0.png b/emojis/src/main/res/drawable/emoji_undecided_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_undecided_f0.png rename to emojis/src/main/res/drawable/emoji_undecided_f0.png diff --git a/app/src/main/res/drawable/emoji_undecided_f1.png b/emojis/src/main/res/drawable/emoji_undecided_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_undecided_f1.png rename to emojis/src/main/res/drawable/emoji_undecided_f1.png diff --git a/app/src/main/res/drawable/emoji_undecided_f2.png b/emojis/src/main/res/drawable/emoji_undecided_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_undecided_f2.png rename to emojis/src/main/res/drawable/emoji_undecided_f2.png diff --git a/app/src/main/res/drawable/emoji_undecided_f3.png b/emojis/src/main/res/drawable/emoji_undecided_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_undecided_f3.png rename to emojis/src/main/res/drawable/emoji_undecided_f3.png diff --git a/app/src/main/res/drawable/emoji_undecided_f4.png b/emojis/src/main/res/drawable/emoji_undecided_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_undecided_f4.png rename to emojis/src/main/res/drawable/emoji_undecided_f4.png diff --git a/app/src/main/res/drawable/emoji_victory.xml b/emojis/src/main/res/drawable/emoji_victory.xml similarity index 100% rename from app/src/main/res/drawable/emoji_victory.xml rename to emojis/src/main/res/drawable/emoji_victory.xml diff --git a/app/src/main/res/drawable/emoji_victory_f0.png b/emojis/src/main/res/drawable/emoji_victory_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f0.png rename to emojis/src/main/res/drawable/emoji_victory_f0.png diff --git a/app/src/main/res/drawable/emoji_victory_f1.png b/emojis/src/main/res/drawable/emoji_victory_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f1.png rename to emojis/src/main/res/drawable/emoji_victory_f1.png diff --git a/app/src/main/res/drawable/emoji_victory_f2.png b/emojis/src/main/res/drawable/emoji_victory_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f2.png rename to emojis/src/main/res/drawable/emoji_victory_f2.png diff --git a/app/src/main/res/drawable/emoji_victory_f3.png b/emojis/src/main/res/drawable/emoji_victory_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f3.png rename to emojis/src/main/res/drawable/emoji_victory_f3.png diff --git a/app/src/main/res/drawable/emoji_victory_f4.png b/emojis/src/main/res/drawable/emoji_victory_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f4.png rename to emojis/src/main/res/drawable/emoji_victory_f4.png diff --git a/app/src/main/res/drawable/emoji_victory_f5.png b/emojis/src/main/res/drawable/emoji_victory_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f5.png rename to emojis/src/main/res/drawable/emoji_victory_f5.png diff --git a/app/src/main/res/drawable/emoji_victory_f6.png b/emojis/src/main/res/drawable/emoji_victory_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f6.png rename to emojis/src/main/res/drawable/emoji_victory_f6.png diff --git a/app/src/main/res/drawable/emoji_victory_f7.png b/emojis/src/main/res/drawable/emoji_victory_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_victory_f7.png rename to emojis/src/main/res/drawable/emoji_victory_f7.png diff --git a/app/src/main/res/drawable/emoji_wade.xml b/emojis/src/main/res/drawable/emoji_wade.xml similarity index 100% rename from app/src/main/res/drawable/emoji_wade.xml rename to emojis/src/main/res/drawable/emoji_wade.xml diff --git a/app/src/main/res/drawable/emoji_wade_f0.png b/emojis/src/main/res/drawable/emoji_wade_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_wade_f0.png rename to emojis/src/main/res/drawable/emoji_wade_f0.png diff --git a/app/src/main/res/drawable/emoji_wav.xml b/emojis/src/main/res/drawable/emoji_wav.xml similarity index 100% rename from app/src/main/res/drawable/emoji_wav.xml rename to emojis/src/main/res/drawable/emoji_wav.xml diff --git a/app/src/main/res/drawable/emoji_wav_f0.png b/emojis/src/main/res/drawable/emoji_wav_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f0.png rename to emojis/src/main/res/drawable/emoji_wav_f0.png diff --git a/app/src/main/res/drawable/emoji_wav_f1.png b/emojis/src/main/res/drawable/emoji_wav_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f1.png rename to emojis/src/main/res/drawable/emoji_wav_f1.png diff --git a/app/src/main/res/drawable/emoji_wav_f10.png b/emojis/src/main/res/drawable/emoji_wav_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f10.png rename to emojis/src/main/res/drawable/emoji_wav_f10.png diff --git a/app/src/main/res/drawable/emoji_wav_f11.png b/emojis/src/main/res/drawable/emoji_wav_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f11.png rename to emojis/src/main/res/drawable/emoji_wav_f11.png diff --git a/app/src/main/res/drawable/emoji_wav_f2.png b/emojis/src/main/res/drawable/emoji_wav_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f2.png rename to emojis/src/main/res/drawable/emoji_wav_f2.png diff --git a/app/src/main/res/drawable/emoji_wav_f3.png b/emojis/src/main/res/drawable/emoji_wav_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f3.png rename to emojis/src/main/res/drawable/emoji_wav_f3.png diff --git a/app/src/main/res/drawable/emoji_wav_f4.png b/emojis/src/main/res/drawable/emoji_wav_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f4.png rename to emojis/src/main/res/drawable/emoji_wav_f4.png diff --git a/app/src/main/res/drawable/emoji_wav_f5.png b/emojis/src/main/res/drawable/emoji_wav_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f5.png rename to emojis/src/main/res/drawable/emoji_wav_f5.png diff --git a/app/src/main/res/drawable/emoji_wav_f6.png b/emojis/src/main/res/drawable/emoji_wav_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f6.png rename to emojis/src/main/res/drawable/emoji_wav_f6.png diff --git a/app/src/main/res/drawable/emoji_wav_f7.png b/emojis/src/main/res/drawable/emoji_wav_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f7.png rename to emojis/src/main/res/drawable/emoji_wav_f7.png diff --git a/app/src/main/res/drawable/emoji_wav_f8.png b/emojis/src/main/res/drawable/emoji_wav_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f8.png rename to emojis/src/main/res/drawable/emoji_wav_f8.png diff --git a/app/src/main/res/drawable/emoji_wav_f9.png b/emojis/src/main/res/drawable/emoji_wav_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_wav_f9.png rename to emojis/src/main/res/drawable/emoji_wav_f9.png diff --git a/app/src/main/res/drawable/emoji_wink.xml b/emojis/src/main/res/drawable/emoji_wink.xml similarity index 100% rename from app/src/main/res/drawable/emoji_wink.xml rename to emojis/src/main/res/drawable/emoji_wink.xml diff --git a/app/src/main/res/drawable/emoji_wink_f0.png b/emojis/src/main/res/drawable/emoji_wink_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f0.png rename to emojis/src/main/res/drawable/emoji_wink_f0.png diff --git a/app/src/main/res/drawable/emoji_wink_f1.png b/emojis/src/main/res/drawable/emoji_wink_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f1.png rename to emojis/src/main/res/drawable/emoji_wink_f1.png diff --git a/app/src/main/res/drawable/emoji_wink_f2.png b/emojis/src/main/res/drawable/emoji_wink_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f2.png rename to emojis/src/main/res/drawable/emoji_wink_f2.png diff --git a/app/src/main/res/drawable/emoji_wink_f3.png b/emojis/src/main/res/drawable/emoji_wink_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f3.png rename to emojis/src/main/res/drawable/emoji_wink_f3.png diff --git a/app/src/main/res/drawable/emoji_wink_f4.png b/emojis/src/main/res/drawable/emoji_wink_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f4.png rename to emojis/src/main/res/drawable/emoji_wink_f4.png diff --git a/app/src/main/res/drawable/emoji_wink_f5.png b/emojis/src/main/res/drawable/emoji_wink_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_wink_f5.png rename to emojis/src/main/res/drawable/emoji_wink_f5.png diff --git a/app/src/main/res/drawable/emoji_ytold.xml b/emojis/src/main/res/drawable/emoji_ytold.xml similarity index 100% rename from app/src/main/res/drawable/emoji_ytold.xml rename to emojis/src/main/res/drawable/emoji_ytold.xml diff --git a/app/src/main/res/drawable/emoji_ytold_f0.png b/emojis/src/main/res/drawable/emoji_ytold_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f0.png rename to emojis/src/main/res/drawable/emoji_ytold_f0.png diff --git a/app/src/main/res/drawable/emoji_ytold_f1.png b/emojis/src/main/res/drawable/emoji_ytold_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f1.png rename to emojis/src/main/res/drawable/emoji_ytold_f1.png diff --git a/app/src/main/res/drawable/emoji_ytold_f10.png b/emojis/src/main/res/drawable/emoji_ytold_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f10.png rename to emojis/src/main/res/drawable/emoji_ytold_f10.png diff --git a/app/src/main/res/drawable/emoji_ytold_f11.png b/emojis/src/main/res/drawable/emoji_ytold_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f11.png rename to emojis/src/main/res/drawable/emoji_ytold_f11.png diff --git a/app/src/main/res/drawable/emoji_ytold_f2.png b/emojis/src/main/res/drawable/emoji_ytold_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f2.png rename to emojis/src/main/res/drawable/emoji_ytold_f2.png diff --git a/app/src/main/res/drawable/emoji_ytold_f3.png b/emojis/src/main/res/drawable/emoji_ytold_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f3.png rename to emojis/src/main/res/drawable/emoji_ytold_f3.png diff --git a/app/src/main/res/drawable/emoji_ytold_f4.png b/emojis/src/main/res/drawable/emoji_ytold_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f4.png rename to emojis/src/main/res/drawable/emoji_ytold_f4.png diff --git a/app/src/main/res/drawable/emoji_ytold_f5.png b/emojis/src/main/res/drawable/emoji_ytold_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f5.png rename to emojis/src/main/res/drawable/emoji_ytold_f5.png diff --git a/app/src/main/res/drawable/emoji_ytold_f6.png b/emojis/src/main/res/drawable/emoji_ytold_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f6.png rename to emojis/src/main/res/drawable/emoji_ytold_f6.png diff --git a/app/src/main/res/drawable/emoji_ytold_f7.png b/emojis/src/main/res/drawable/emoji_ytold_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f7.png rename to emojis/src/main/res/drawable/emoji_ytold_f7.png diff --git a/app/src/main/res/drawable/emoji_ytold_f8.png b/emojis/src/main/res/drawable/emoji_ytold_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f8.png rename to emojis/src/main/res/drawable/emoji_ytold_f8.png diff --git a/app/src/main/res/drawable/emoji_ytold_f9.png b/emojis/src/main/res/drawable/emoji_ytold_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_ytold_f9.png rename to emojis/src/main/res/drawable/emoji_ytold_f9.png diff --git a/app/src/main/res/drawable/emoji_yu.xml b/emojis/src/main/res/drawable/emoji_yu.xml similarity index 100% rename from app/src/main/res/drawable/emoji_yu.xml rename to emojis/src/main/res/drawable/emoji_yu.xml diff --git a/app/src/main/res/drawable/emoji_yu_f0.png b/emojis/src/main/res/drawable/emoji_yu_f0.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f0.png rename to emojis/src/main/res/drawable/emoji_yu_f0.png diff --git a/app/src/main/res/drawable/emoji_yu_f1.png b/emojis/src/main/res/drawable/emoji_yu_f1.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f1.png rename to emojis/src/main/res/drawable/emoji_yu_f1.png diff --git a/app/src/main/res/drawable/emoji_yu_f10.png b/emojis/src/main/res/drawable/emoji_yu_f10.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f10.png rename to emojis/src/main/res/drawable/emoji_yu_f10.png diff --git a/app/src/main/res/drawable/emoji_yu_f11.png b/emojis/src/main/res/drawable/emoji_yu_f11.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f11.png rename to emojis/src/main/res/drawable/emoji_yu_f11.png diff --git a/app/src/main/res/drawable/emoji_yu_f12.png b/emojis/src/main/res/drawable/emoji_yu_f12.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f12.png rename to emojis/src/main/res/drawable/emoji_yu_f12.png diff --git a/app/src/main/res/drawable/emoji_yu_f13.png b/emojis/src/main/res/drawable/emoji_yu_f13.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f13.png rename to emojis/src/main/res/drawable/emoji_yu_f13.png diff --git a/app/src/main/res/drawable/emoji_yu_f2.png b/emojis/src/main/res/drawable/emoji_yu_f2.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f2.png rename to emojis/src/main/res/drawable/emoji_yu_f2.png diff --git a/app/src/main/res/drawable/emoji_yu_f3.png b/emojis/src/main/res/drawable/emoji_yu_f3.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f3.png rename to emojis/src/main/res/drawable/emoji_yu_f3.png diff --git a/app/src/main/res/drawable/emoji_yu_f4.png b/emojis/src/main/res/drawable/emoji_yu_f4.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f4.png rename to emojis/src/main/res/drawable/emoji_yu_f4.png diff --git a/app/src/main/res/drawable/emoji_yu_f5.png b/emojis/src/main/res/drawable/emoji_yu_f5.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f5.png rename to emojis/src/main/res/drawable/emoji_yu_f5.png diff --git a/app/src/main/res/drawable/emoji_yu_f6.png b/emojis/src/main/res/drawable/emoji_yu_f6.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f6.png rename to emojis/src/main/res/drawable/emoji_yu_f6.png diff --git a/app/src/main/res/drawable/emoji_yu_f7.png b/emojis/src/main/res/drawable/emoji_yu_f7.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f7.png rename to emojis/src/main/res/drawable/emoji_yu_f7.png diff --git a/app/src/main/res/drawable/emoji_yu_f8.png b/emojis/src/main/res/drawable/emoji_yu_f8.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f8.png rename to emojis/src/main/res/drawable/emoji_yu_f8.png diff --git a/app/src/main/res/drawable/emoji_yu_f9.png b/emojis/src/main/res/drawable/emoji_yu_f9.png similarity index 100% rename from app/src/main/res/drawable/emoji_yu_f9.png rename to emojis/src/main/res/drawable/emoji_yu_f9.png diff --git a/emojis/src/main/res/values/strings.xml b/emojis/src/main/res/values/strings.xml new file mode 100644 index 00000000..620d1ae7 --- /dev/null +++ b/emojis/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + thmmy emojis + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7076a01e..669ee9b7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 17 12:32:34 EEST 2019 +#Sat May 09 21:06:12 EEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/settings.gradle b/settings.gradle index e7b4def4..9ba36c05 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app' +include ':app', ':emojis'