├── .codeclimate.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── build.gradle.kts ├── circle.yml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── livedata-combinetuple-kt ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── zhuinden │ └── livedatacombinetuplekt │ ├── LiveDataCombineTuple.kt │ ├── LiveDataCombineTupleNonNull.kt │ ├── LiveDataCombineTupleSkipNull.kt │ └── LiveDataHelper.kt └── settings.gradle.kts /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | ## other configuration excluded from example... 2 | exclude_patterns: 3 | - "simple-stack-example-**" 4 | - "simple-stack/src/test/" 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .idea 6 | /.idea/workspace.xml 7 | /.idea/libraries 8 | .DS_Store 9 | /build 10 | /captures 11 | .externalNativeBuild 12 | projectFilesBackup 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change log 2 | 3 | -LiveData-CombineTuple-KT 2.0.0 (2021-12-21) 4 | -------------------------------- 5 | 6 | - BEHAVIOR CHANGE: `Objects.equals()` is applied before setting the value on the Mediator. 7 | 8 | Refer to https://github.com/android/architecture-components-samples/blob/ea59732402708c8e7bca3ecc24a7c9ca85736b55/GithubBrowserSample/app/src/main/java/com/android/example/github/repository/NetworkBoundResource.java#L60-L65 9 | 10 | - FIX: `onActive()` would call `setValue` which would trigger `observe()` as many times as there were LiveDatas. 11 | 12 | I think this was reported, but someone truly pointed out the cause not too long ago, unfortunately. 13 | 14 | -LiveData-CombineTuple-KT 1.3.0 (2021-11-03) 15 | -------------------------------- 16 | - Add `combineTupleSkipNull`, which is probably what people always really wanted (has `null` until all values of all LiveData are not null). 17 | 18 | -LiveData-CombineTuple-KT 1.2.1 (2021-02-10) 19 | -------------------------------- 20 | 21 | - Update Kotlin to 1.4.30. 22 | 23 | - Update tuples-kt to 1.1.0. 24 | 25 | -LiveData-CombineTuple-KT 1.2.0 (2020-12-19) 26 | -------------------------------- 27 | 28 | - Update Kotlin to 1.4.21. 29 | 30 | - Update tuples-kt to 1.1.0. 31 | 32 | -LiveData-CombineTuple-KT 1.1.0 (2020-10-04) 33 | -------------------------------- 34 | 35 | - Add `combineTupleNonNull`, which only allows LiveData with non-null values, but provides non-null decomposition. 36 | 37 | -LiveData-CombineTuple-KT 1.0.0 (2020-03-31) 38 | -------------------------------- 39 | 40 | - Initial Release. -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LiveData-CombineTuple-KT 2 | 3 | LiveData-CombineTuple-KT contains helper functions for LiveData, to combine their latest emissions into typed tuples. 4 | 5 | Under the hood, it uses Tuples-KT to help provide combiners from 2 to 16 arity. 6 | 7 | ``` kotlin 8 | combineTuple(liveData1, liveData2, liveData3) 9 | .observe(lifecycleOwner) { (t1, t2, t3) -> 10 | // do something with combined livedata values 11 | } 12 | ``` 13 | 14 | ## Why? 15 | 16 | It's useful when you want to combine multiple reactive streams together and get a combined object of the latest values, without defining an actual class with an actual name to do it. 17 | 18 | ## Using LiveData-CombineTuple-KT 19 | 20 | In order to use LiveData-CombineTuple-KT, you need to add `jitpack` to your project root `build.gradle.kts` 21 | (or `build.gradle`): 22 | 23 | ``` kotlin 24 | // build.gradle.kts 25 | allprojects { 26 | repositories { 27 | // ... 28 | maven { setUrl("https://jitpack.io") } 29 | } 30 | // ... 31 | } 32 | ``` 33 | 34 | or 35 | 36 | ``` groovy 37 | // build.gradle 38 | allprojects { 39 | repositories { 40 | // ... 41 | maven { url "https://jitpack.io" } 42 | } 43 | // ... 44 | } 45 | ``` 46 | 47 | In newer projects, you need to also update the `settings.gradle` file's `dependencyResolutionManagement` block: 48 | 49 | ``` 50 | dependencyResolutionManagement { 51 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 52 | repositories { 53 | google() 54 | mavenCentral() 55 | maven { url 'https://jitpack.io' } // <-- 56 | jcenter() // Warning: this repository is going to shut down soon 57 | } 58 | } 59 | ``` 60 | 61 | 62 | and then, add the dependency to your module's `build.gradle.kts` (or `build.gradle`): 63 | 64 | ``` kotlin 65 | // build.gradle.kts 66 | implementation("com.github.Zhuinden:livedata-combinetuple-kt:2.0.0") 67 | ``` 68 | 69 | or 70 | 71 | ``` groovy 72 | // build.gradle 73 | implementation 'com.github.Zhuinden:livedata-combinetuple-kt:2.0.0' 74 | ``` 75 | 76 | ## License 77 | 78 | Copyright 2020 Gabor Varadi 79 | 80 | Licensed under the Apache License, Version 2.0 (the "License"); 81 | you may not use this file except in compliance with the License. 82 | You may obtain a copy of the License at 83 | 84 | http://www.apache.org/licenses/LICENSE-2.0 85 | 86 | Unless required by applicable law or agreed to in writing, software 87 | distributed under the License is distributed on an "AS IS" BASIS, 88 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 89 | See the License for the specific language governing permissions and 90 | limitations under the License. 91 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | mavenCentral() 7 | maven { setUrl("https://clojars.org/repo/") } 8 | maven { setUrl("https://jitpack.io") } 9 | maven { setUrl("https://maven.google.com") } 10 | jcenter() 11 | } 12 | dependencies { 13 | classpath("com.android.tools.build:gradle:4.1.1") 14 | classpath("com.github.dcendents:android-maven-gradle-plugin:2.1") 15 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30") 16 | // NOTE: Do not place your application dependencies here; they belong 17 | // in the individual module build.gradle files 18 | } 19 | } 20 | 21 | allprojects { 22 | repositories { 23 | google() 24 | mavenCentral() 25 | maven { setUrl("https://clojars.org/repo/") } 26 | maven { setUrl("https://jitpack.io") } 27 | maven { setUrl("https://oss.sonatype.org/content/repositories/snapshots/") } 28 | maven { setUrl("https://maven.google.com") } 29 | jcenter() 30 | } 31 | } 32 | 33 | task("clean") { 34 | delete(rootProject.buildDir) 35 | } 36 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | machine: 2 | environment: 3 | ANDROID_HOME: /usr/local/android-sdk-linux 4 | 5 | dependencies: 6 | pre: 7 | - echo y | android update sdk --no-ui --all --filter "tools,platform-tools,android-25" 8 | - echo y | android update sdk --no-ui --all --filter "build-tools-25.0.2" 9 | - echo y | android update sdk --no-ui --all --filter "extra-android-support"; 10 | - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"; 11 | - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"; 12 | 13 | test: 14 | override: 15 | - ./gradlew build check 16 | 17 | # copy lint report 18 | - mkdir $CIRCLE_TEST_REPORTS/Lint 19 | - mv simple-stack/build/outputs/lint-results-debug.xml $CIRCLE_TEST_REPORTS/lint 20 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | kotlin.incremental=false 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | 19 | android.enableJetifier=false 20 | android.useAndroidX=true 21 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zhuinden/livedata-combinetuple-kt/7be39a07132bb6ebef408ae76ab4cdca42f04cd6/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed May 15 09:23:58 CEST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Attempt to set APP_HOME 10 | # Resolve links: $0 may be a link 11 | PRG="$0" 12 | # Need this for relative symlinks. 13 | while [ -h "$PRG" ] ; do 14 | ls=`ls -ld "$PRG"` 15 | link=`expr "$ls" : '.*-> \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS="" 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn () { 37 | echo "$*" 38 | } 39 | 40 | die () { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Escape application args 158 | save () { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /livedata-combinetuple-kt/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /livedata-combinetuple-kt/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.library") 3 | kotlin("android") 4 | id("com.github.dcendents.android-maven") 5 | } 6 | 7 | android { 8 | compileSdkVersion(28) 9 | 10 | defaultConfig { 11 | minSdkVersion(9) 12 | targetSdkVersion(28) 13 | versionCode = 1 14 | versionName = "1.0.0" 15 | testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" 16 | } 17 | 18 | buildTypes { 19 | getByName("release") { 20 | isMinifyEnabled = false 21 | proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") 22 | } 23 | } 24 | 25 | lintOptions { 26 | isAbortOnError = false 27 | } 28 | 29 | compileOptions { 30 | this.sourceCompatibility(JavaVersion.VERSION_1_7) 31 | this.targetCompatibility(JavaVersion.VERSION_1_7) 32 | } 33 | } 34 | 35 | dependencies { 36 | //implementation(mapOf("dir" to "libs", "include" to listOf("*.jar"))) 37 | api("com.github.Zhuinden:tuples-kt:1.1.1") 38 | api("androidx.lifecycle:lifecycle-livedata-ktx:2.2.0") 39 | 40 | testImplementation("junit:junit:4.13.1") 41 | testImplementation("org.assertj:assertj-core:3.16.1") 42 | testImplementation("org.mockito:mockito-core:2.23.0") 43 | androidTestImplementation("junit:junit:4.13.1") 44 | } 45 | 46 | // build a jar with source files 47 | val sourcesJar by tasks.registering(Jar::class) { 48 | from(android.sourceSets["main"].java.srcDirs) 49 | archiveClassifier.set("sources") 50 | } 51 | 52 | val javadoc by tasks.registering(Javadoc::class) { 53 | isFailOnError = false 54 | source = android.sourceSets["main"].java.getSourceFiles() 55 | classpath += project.files(android.bootClasspath.joinToString(separator = File.pathSeparator)) 56 | classpath += configurations.compile 57 | } 58 | 59 | // build a jar with javadoc 60 | val javadocJar by tasks.registering(Jar::class) { 61 | dependsOn(javadoc) 62 | archiveClassifier.set("javadoc") 63 | from(javadoc.get().destinationDir) 64 | } 65 | 66 | artifacts { 67 | archives(sourcesJar) 68 | archives(javadocJar) 69 | } 70 | -------------------------------------------------------------------------------- /livedata-combinetuple-kt/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Development\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /livedata-combinetuple-kt/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 20 | -------------------------------------------------------------------------------- /livedata-combinetuple-kt/src/main/java/com/zhuinden/livedatacombinetuplekt/LiveDataCombineTuple.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Gabor Varadi 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.zhuinden.livedatacombinetuplekt 17 | 18 | import androidx.lifecycle.LiveData 19 | import androidx.lifecycle.MediatorLiveData 20 | import com.zhuinden.tupleskt.* 21 | 22 | fun combineTuple(f1: LiveData, f2: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 23 | mediator.setValueIfNotEqual(Pair(f1.value, f2.value)) 24 | 25 | mediator.addSource(f1) { t1: T1? -> 26 | val (_, t2) = mediator.value!! 27 | mediator.setValueIfNotEqual(Pair(t1, t2)) 28 | } 29 | 30 | mediator.addSource(f2) { t2: T2? -> 31 | val (t1, _) = mediator.value!! 32 | mediator.setValueIfNotEqual(Pair(t1, t2)) 33 | } 34 | } 35 | 36 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 37 | mediator.setValueIfNotEqual(Triple(f1.value, f2.value, f3.value)) 38 | 39 | mediator.addSource(f1) { t1: T1? -> 40 | val (_, t2, t3) = mediator.value!! 41 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 42 | } 43 | 44 | mediator.addSource(f2) { t2: T2? -> 45 | val (t1, _, t3) = mediator.value!! 46 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 47 | } 48 | 49 | mediator.addSource(f3) { t3: T3? -> 50 | val (t1, t2, _) = mediator.value!! 51 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 52 | } 53 | } 54 | 55 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 56 | mediator.setValueIfNotEqual(Tuple4(f1.value, f2.value, f3.value, f4.value)) 57 | 58 | mediator.addSource(f1) { t1: T1? -> 59 | val (_, t2, t3, t4) = mediator.value!! 60 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 61 | } 62 | 63 | mediator.addSource(f2) { t2: T2? -> 64 | val (t1, _, t3, t4) = mediator.value!! 65 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 66 | } 67 | 68 | mediator.addSource(f3) { t3: T3? -> 69 | val (t1, t2, _, t4) = mediator.value!! 70 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 71 | } 72 | 73 | mediator.addSource(f4) { t4: T4? -> 74 | val (t1, t2, t3, _) = mediator.value!! 75 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 76 | } 77 | } 78 | 79 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 80 | mediator.setValueIfNotEqual(Tuple5(f1.value, f2.value, f3.value, f4.value, f5.value)) 81 | 82 | mediator.addSource(f1) { t1: T1? -> 83 | val (_, t2, t3, t4, t5) = mediator.value!! 84 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 85 | } 86 | 87 | mediator.addSource(f2) { t2: T2? -> 88 | val (t1, _, t3, t4, t5) = mediator.value!! 89 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 90 | } 91 | 92 | mediator.addSource(f3) { t3: T3? -> 93 | val (t1, t2, _, t4, t5) = mediator.value!! 94 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 95 | } 96 | 97 | mediator.addSource(f4) { t4: T4? -> 98 | val (t1, t2, t3, _, t5) = mediator.value!! 99 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 100 | } 101 | 102 | mediator.addSource(f5) { t5: T5? -> 103 | val (t1, t2, t3, t4, _) = mediator.value!! 104 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 105 | } 106 | } 107 | 108 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 109 | mediator.setValueIfNotEqual(Tuple6(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value)) 110 | 111 | mediator.addSource(f1) { t1: T1? -> 112 | val (_, t2, t3, t4, t5, t6) = mediator.value!! 113 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 114 | } 115 | 116 | mediator.addSource(f2) { t2: T2? -> 117 | val (t1, _, t3, t4, t5, t6) = mediator.value!! 118 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 119 | } 120 | 121 | mediator.addSource(f3) { t3: T3? -> 122 | val (t1, t2, _, t4, t5, t6) = mediator.value!! 123 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 124 | } 125 | 126 | mediator.addSource(f4) { t4: T4? -> 127 | val (t1, t2, t3, _, t5, t6) = mediator.value!! 128 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 129 | } 130 | 131 | mediator.addSource(f5) { t5: T5? -> 132 | val (t1, t2, t3, t4, _, t6) = mediator.value!! 133 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 134 | } 135 | 136 | mediator.addSource(f6) { t6: T6? -> 137 | val (t1, t2, t3, t4, t5, _) = mediator.value!! 138 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 139 | } 140 | } 141 | 142 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 143 | mediator.setValueIfNotEqual(Tuple7(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value)) 144 | 145 | mediator.addSource(f1) { t1: T1? -> 146 | val (_, t2, t3, t4, t5, t6, t7) = mediator.value!! 147 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 148 | } 149 | 150 | mediator.addSource(f2) { t2: T2? -> 151 | val (t1, _, t3, t4, t5, t6, t7) = mediator.value!! 152 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 153 | } 154 | 155 | mediator.addSource(f3) { t3: T3? -> 156 | val (t1, t2, _, t4, t5, t6, t7) = mediator.value!! 157 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 158 | } 159 | 160 | mediator.addSource(f4) { t4: T4? -> 161 | val (t1, t2, t3, _, t5, t6, t7) = mediator.value!! 162 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 163 | } 164 | 165 | mediator.addSource(f5) { t5: T5? -> 166 | val (t1, t2, t3, t4, _, t6, t7) = mediator.value!! 167 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 168 | } 169 | 170 | mediator.addSource(f6) { t6: T6? -> 171 | val (t1, t2, t3, t4, t5, _, t7) = mediator.value!! 172 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 173 | } 174 | 175 | mediator.addSource(f7) { t7: T7? -> 176 | val (t1, t2, t3, t4, t5, t6, _) = mediator.value!! 177 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 178 | } 179 | } 180 | 181 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 182 | mediator.setValueIfNotEqual(Tuple8(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value)) 183 | 184 | mediator.addSource(f1) { t1: T1? -> 185 | val (_, t2, t3, t4, t5, t6, t7, t8) = mediator.value!! 186 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 187 | } 188 | 189 | mediator.addSource(f2) { t2: T2? -> 190 | val (t1, _, t3, t4, t5, t6, t7, t8) = mediator.value!! 191 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 192 | } 193 | 194 | mediator.addSource(f3) { t3: T3? -> 195 | val (t1, t2, _, t4, t5, t6, t7, t8) = mediator.value!! 196 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 197 | } 198 | 199 | mediator.addSource(f4) { t4: T4? -> 200 | val (t1, t2, t3, _, t5, t6, t7, t8) = mediator.value!! 201 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 202 | } 203 | 204 | mediator.addSource(f5) { t5: T5? -> 205 | val (t1, t2, t3, t4, _, t6, t7, t8) = mediator.value!! 206 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 207 | } 208 | 209 | mediator.addSource(f6) { t6: T6? -> 210 | val (t1, t2, t3, t4, t5, _, t7, t8) = mediator.value!! 211 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 212 | } 213 | 214 | mediator.addSource(f7) { t7: T7? -> 215 | val (t1, t2, t3, t4, t5, t6, _, t8) = mediator.value!! 216 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 217 | } 218 | 219 | mediator.addSource(f8) { t8: T8? -> 220 | val (t1, t2, t3, t4, t5, t6, t7, _) = mediator.value!! 221 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 222 | } 223 | } 224 | 225 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 226 | mediator.setValueIfNotEqual(Tuple9(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value)) 227 | 228 | mediator.addSource(f1) { t1: T1? -> 229 | val (_, t2, t3, t4, t5, t6, t7, t8, t9) = mediator.value!! 230 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 231 | } 232 | 233 | mediator.addSource(f2) { t2: T2? -> 234 | val (t1, _, t3, t4, t5, t6, t7, t8, t9) = mediator.value!! 235 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 236 | } 237 | 238 | mediator.addSource(f3) { t3: T3? -> 239 | val (t1, t2, _, t4, t5, t6, t7, t8, t9) = mediator.value!! 240 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 241 | } 242 | 243 | mediator.addSource(f4) { t4: T4? -> 244 | val (t1, t2, t3, _, t5, t6, t7, t8, t9) = mediator.value!! 245 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 246 | } 247 | 248 | mediator.addSource(f5) { t5: T5? -> 249 | val (t1, t2, t3, t4, _, t6, t7, t8, t9) = mediator.value!! 250 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 251 | } 252 | 253 | mediator.addSource(f6) { t6: T6? -> 254 | val (t1, t2, t3, t4, t5, _, t7, t8, t9) = mediator.value!! 255 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 256 | } 257 | 258 | mediator.addSource(f7) { t7: T7? -> 259 | val (t1, t2, t3, t4, t5, t6, _, t8, t9) = mediator.value!! 260 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 261 | } 262 | 263 | mediator.addSource(f8) { t8: T8? -> 264 | val (t1, t2, t3, t4, t5, t6, t7, _, t9) = mediator.value!! 265 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 266 | } 267 | 268 | mediator.addSource(f9) { t9: T9? -> 269 | val (t1, t2, t3, t4, t5, t6, t7, t8, _) = mediator.value!! 270 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 271 | } 272 | } 273 | 274 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 275 | mediator.setValueIfNotEqual(Tuple10(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value)) 276 | 277 | mediator.addSource(f1) { t1: T1? -> 278 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 279 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 280 | } 281 | 282 | mediator.addSource(f2) { t2: T2? -> 283 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 284 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 285 | } 286 | 287 | mediator.addSource(f3) { t3: T3? -> 288 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 289 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 290 | } 291 | 292 | mediator.addSource(f4) { t4: T4? -> 293 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10) = mediator.value!! 294 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 295 | } 296 | 297 | mediator.addSource(f5) { t5: T5? -> 298 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10) = mediator.value!! 299 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 300 | } 301 | 302 | mediator.addSource(f6) { t6: T6? -> 303 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10) = mediator.value!! 304 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 305 | } 306 | 307 | mediator.addSource(f7) { t7: T7? -> 308 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10) = mediator.value!! 309 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 310 | } 311 | 312 | mediator.addSource(f8) { t8: T8? -> 313 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10) = mediator.value!! 314 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 315 | } 316 | 317 | mediator.addSource(f9) { t9: T9? -> 318 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10) = mediator.value!! 319 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 320 | } 321 | 322 | mediator.addSource(f10) { t10: T10? -> 323 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _) = mediator.value!! 324 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 325 | } 326 | } 327 | 328 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 329 | mediator.setValueIfNotEqual(Tuple11(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value)) 330 | 331 | mediator.addSource(f1) { t1: T1? -> 332 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 333 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 334 | } 335 | 336 | mediator.addSource(f2) { t2: T2? -> 337 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 338 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 339 | } 340 | 341 | mediator.addSource(f3) { t3: T3? -> 342 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 343 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 344 | } 345 | 346 | mediator.addSource(f4) { t4: T4? -> 347 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 348 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 349 | } 350 | 351 | mediator.addSource(f5) { t5: T5? -> 352 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11) = mediator.value!! 353 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 354 | } 355 | 356 | mediator.addSource(f6) { t6: T6? -> 357 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11) = mediator.value!! 358 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 359 | } 360 | 361 | mediator.addSource(f7) { t7: T7? -> 362 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11) = mediator.value!! 363 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 364 | } 365 | 366 | mediator.addSource(f8) { t8: T8? -> 367 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11) = mediator.value!! 368 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 369 | } 370 | 371 | mediator.addSource(f9) { t9: T9? -> 372 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11) = mediator.value!! 373 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 374 | } 375 | 376 | mediator.addSource(f10) { t10: T10? -> 377 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11) = mediator.value!! 378 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 379 | } 380 | 381 | mediator.addSource(f11) { t11: T11? -> 382 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _) = mediator.value!! 383 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 384 | } 385 | } 386 | 387 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 388 | mediator.setValueIfNotEqual(Tuple12(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value, f12.value)) 389 | 390 | mediator.addSource(f1) { t1: T1? -> 391 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 392 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 393 | } 394 | 395 | mediator.addSource(f2) { t2: T2? -> 396 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 397 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 398 | } 399 | 400 | mediator.addSource(f3) { t3: T3? -> 401 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 402 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 403 | } 404 | 405 | mediator.addSource(f4) { t4: T4? -> 406 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 407 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 408 | } 409 | 410 | mediator.addSource(f5) { t5: T5? -> 411 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 412 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 413 | } 414 | 415 | mediator.addSource(f6) { t6: T6? -> 416 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12) = mediator.value!! 417 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 418 | } 419 | 420 | mediator.addSource(f7) { t7: T7? -> 421 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12) = mediator.value!! 422 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 423 | } 424 | 425 | mediator.addSource(f8) { t8: T8? -> 426 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12) = mediator.value!! 427 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 428 | } 429 | 430 | mediator.addSource(f9) { t9: T9? -> 431 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12) = mediator.value!! 432 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 433 | } 434 | 435 | mediator.addSource(f10) { t10: T10? -> 436 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12) = mediator.value!! 437 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 438 | } 439 | 440 | mediator.addSource(f11) { t11: T11? -> 441 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12) = mediator.value!! 442 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 443 | } 444 | 445 | mediator.addSource(f12) { t12: T12? -> 446 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _) = mediator.value!! 447 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 448 | } 449 | } 450 | 451 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 452 | mediator.setValueIfNotEqual(Tuple13(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value, f12.value, f13.value)) 453 | 454 | mediator.addSource(f1) { t1: T1? -> 455 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 456 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 457 | } 458 | 459 | mediator.addSource(f2) { t2: T2? -> 460 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 461 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 462 | } 463 | 464 | mediator.addSource(f3) { t3: T3? -> 465 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 466 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 467 | } 468 | 469 | mediator.addSource(f4) { t4: T4? -> 470 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 471 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 472 | } 473 | 474 | mediator.addSource(f5) { t5: T5? -> 475 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 476 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 477 | } 478 | 479 | mediator.addSource(f6) { t6: T6? -> 480 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 481 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 482 | } 483 | 484 | mediator.addSource(f7) { t7: T7? -> 485 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13) = mediator.value!! 486 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 487 | } 488 | 489 | mediator.addSource(f8) { t8: T8? -> 490 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13) = mediator.value!! 491 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 492 | } 493 | 494 | mediator.addSource(f9) { t9: T9? -> 495 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13) = mediator.value!! 496 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 497 | } 498 | 499 | mediator.addSource(f10) { t10: T10? -> 500 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13) = mediator.value!! 501 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 502 | } 503 | 504 | mediator.addSource(f11) { t11: T11? -> 505 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13) = mediator.value!! 506 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 507 | } 508 | 509 | mediator.addSource(f12) { t12: T12? -> 510 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13) = mediator.value!! 511 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 512 | } 513 | 514 | mediator.addSource(f13) { t13: T13? -> 515 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _) = mediator.value!! 516 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 517 | } 518 | } 519 | 520 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 521 | mediator.setValueIfNotEqual(Tuple14(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value, f12.value, f13.value, f14.value)) 522 | 523 | mediator.addSource(f1) { t1: T1? -> 524 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 525 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 526 | } 527 | 528 | mediator.addSource(f2) { t2: T2? -> 529 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 530 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 531 | } 532 | 533 | mediator.addSource(f3) { t3: T3? -> 534 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 535 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 536 | } 537 | 538 | mediator.addSource(f4) { t4: T4? -> 539 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 540 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 541 | } 542 | 543 | mediator.addSource(f5) { t5: T5? -> 544 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 545 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 546 | } 547 | 548 | mediator.addSource(f6) { t6: T6? -> 549 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 550 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 551 | } 552 | 553 | mediator.addSource(f7) { t7: T7? -> 554 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 555 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 556 | } 557 | 558 | mediator.addSource(f8) { t8: T8? -> 559 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14) = mediator.value!! 560 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 561 | } 562 | 563 | mediator.addSource(f9) { t9: T9? -> 564 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14) = mediator.value!! 565 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 566 | } 567 | 568 | mediator.addSource(f10) { t10: T10? -> 569 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14) = mediator.value!! 570 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 571 | } 572 | 573 | mediator.addSource(f11) { t11: T11? -> 574 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14) = mediator.value!! 575 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 576 | } 577 | 578 | mediator.addSource(f12) { t12: T12? -> 579 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14) = mediator.value!! 580 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 581 | } 582 | 583 | mediator.addSource(f13) { t13: T13? -> 584 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14) = mediator.value!! 585 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 586 | } 587 | 588 | mediator.addSource(f14) { t14: T14? -> 589 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _) = mediator.value!! 590 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 591 | } 592 | } 593 | 594 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 595 | mediator.setValueIfNotEqual(Tuple15(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value, f12.value, f13.value, f14.value, f15.value)) 596 | 597 | mediator.addSource(f1) { t1: T1? -> 598 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 599 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 600 | } 601 | 602 | mediator.addSource(f2) { t2: T2? -> 603 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 604 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 605 | } 606 | 607 | mediator.addSource(f3) { t3: T3? -> 608 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 609 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 610 | } 611 | 612 | mediator.addSource(f4) { t4: T4? -> 613 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 614 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 615 | } 616 | 617 | mediator.addSource(f5) { t5: T5? -> 618 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 619 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 620 | } 621 | 622 | mediator.addSource(f6) { t6: T6? -> 623 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 624 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 625 | } 626 | 627 | mediator.addSource(f7) { t7: T7? -> 628 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 629 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 630 | } 631 | 632 | mediator.addSource(f8) { t8: T8? -> 633 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 634 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 635 | } 636 | 637 | mediator.addSource(f9) { t9: T9? -> 638 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14, t15) = mediator.value!! 639 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 640 | } 641 | 642 | mediator.addSource(f10) { t10: T10? -> 643 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14, t15) = mediator.value!! 644 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 645 | } 646 | 647 | mediator.addSource(f11) { t11: T11? -> 648 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14, t15) = mediator.value!! 649 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 650 | } 651 | 652 | mediator.addSource(f12) { t12: T12? -> 653 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14, t15) = mediator.value!! 654 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 655 | } 656 | 657 | mediator.addSource(f13) { t13: T13? -> 658 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14, t15) = mediator.value!! 659 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 660 | } 661 | 662 | mediator.addSource(f14) { t14: T14? -> 663 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _, t15) = mediator.value!! 664 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 665 | } 666 | 667 | mediator.addSource(f15) { t15: T15? -> 668 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, _) = mediator.value!! 669 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 670 | } 671 | } 672 | 673 | fun combineTuple(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData, f16: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 674 | mediator.setValueIfNotEqual(Tuple16(f1.value, f2.value, f3.value, f4.value, f5.value, f6.value, f7.value, f8.value, f9.value, f10.value, f11.value, f12.value, f13.value, f14.value, f15.value, f16.value)) 675 | 676 | mediator.addSource(f1) { t1: T1? -> 677 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 678 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 679 | } 680 | 681 | mediator.addSource(f2) { t2: T2? -> 682 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 683 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 684 | } 685 | 686 | mediator.addSource(f3) { t3: T3? -> 687 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 688 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 689 | } 690 | 691 | mediator.addSource(f4) { t4: T4? -> 692 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 693 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 694 | } 695 | 696 | mediator.addSource(f5) { t5: T5? -> 697 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 698 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 699 | } 700 | 701 | mediator.addSource(f6) { t6: T6? -> 702 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 703 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 704 | } 705 | 706 | mediator.addSource(f7) { t7: T7? -> 707 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 708 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 709 | } 710 | 711 | mediator.addSource(f8) { t8: T8? -> 712 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 713 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 714 | } 715 | 716 | mediator.addSource(f9) { t9: T9? -> 717 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 718 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 719 | } 720 | 721 | mediator.addSource(f10) { t10: T10? -> 722 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14, t15, t16) = mediator.value!! 723 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 724 | } 725 | 726 | mediator.addSource(f11) { t11: T11? -> 727 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14, t15, t16) = mediator.value!! 728 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 729 | } 730 | 731 | mediator.addSource(f12) { t12: T12? -> 732 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14, t15, t16) = mediator.value!! 733 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 734 | } 735 | 736 | mediator.addSource(f13) { t13: T13? -> 737 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14, t15, t16) = mediator.value!! 738 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 739 | } 740 | 741 | mediator.addSource(f14) { t14: T14? -> 742 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _, t15, t16) = mediator.value!! 743 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 744 | } 745 | 746 | mediator.addSource(f15) { t15: T15? -> 747 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, _, t16) = mediator.value!! 748 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 749 | } 750 | 751 | mediator.addSource(f16) { t16: T16? -> 752 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, _) = mediator.value!! 753 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 754 | } 755 | } -------------------------------------------------------------------------------- /livedata-combinetuple-kt/src/main/java/com/zhuinden/livedatacombinetuplekt/LiveDataCombineTupleNonNull.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Gabor Varadi 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.zhuinden.livedatacombinetuplekt 17 | 18 | import androidx.lifecycle.LiveData 19 | import androidx.lifecycle.MediatorLiveData 20 | import com.zhuinden.tupleskt.* 21 | 22 | fun combineTupleNonNull(f1: LiveData, f2: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 23 | mediator.setValueIfNotEqual(Pair(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" })) 24 | 25 | mediator.addSource(f1) { t1: T1 -> 26 | val (_, t2) = mediator.value!! 27 | mediator.setValueIfNotEqual(Pair(t1, t2)) 28 | } 29 | 30 | mediator.addSource(f2) { t2: T2 -> 31 | val (t1, _) = mediator.value!! 32 | mediator.setValueIfNotEqual(Pair(t1, t2)) 33 | } 34 | } 35 | 36 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 37 | mediator.setValueIfNotEqual(Triple(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" })) 38 | 39 | mediator.addSource(f1) { t1: T1 -> 40 | val (_, t2, t3) = mediator.value!! 41 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 42 | } 43 | 44 | mediator.addSource(f2) { t2: T2 -> 45 | val (t1, _, t3) = mediator.value!! 46 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 47 | } 48 | 49 | mediator.addSource(f3) { t3: T3 -> 50 | val (t1, t2, _) = mediator.value!! 51 | mediator.setValueIfNotEqual(Triple(t1, t2, t3)) 52 | } 53 | } 54 | 55 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 56 | mediator.setValueIfNotEqual(Tuple4(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" })) 57 | 58 | mediator.addSource(f1) { t1: T1 -> 59 | val (_, t2, t3, t4) = mediator.value!! 60 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 61 | } 62 | 63 | mediator.addSource(f2) { t2: T2 -> 64 | val (t1, _, t3, t4) = mediator.value!! 65 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 66 | } 67 | 68 | mediator.addSource(f3) { t3: T3 -> 69 | val (t1, t2, _, t4) = mediator.value!! 70 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 71 | } 72 | 73 | mediator.addSource(f4) { t4: T4 -> 74 | val (t1, t2, t3, _) = mediator.value!! 75 | mediator.setValueIfNotEqual(Tuple4(t1, t2, t3, t4)) 76 | } 77 | } 78 | 79 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 80 | mediator.setValueIfNotEqual(Tuple5(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" })) 81 | 82 | mediator.addSource(f1) { t1: T1 -> 83 | val (_, t2, t3, t4, t5) = mediator.value!! 84 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 85 | } 86 | 87 | mediator.addSource(f2) { t2: T2 -> 88 | val (t1, _, t3, t4, t5) = mediator.value!! 89 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 90 | } 91 | 92 | mediator.addSource(f3) { t3: T3 -> 93 | val (t1, t2, _, t4, t5) = mediator.value!! 94 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 95 | } 96 | 97 | mediator.addSource(f4) { t4: T4 -> 98 | val (t1, t2, t3, _, t5) = mediator.value!! 99 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 100 | } 101 | 102 | mediator.addSource(f5) { t5: T5 -> 103 | val (t1, t2, t3, t4, _) = mediator.value!! 104 | mediator.setValueIfNotEqual(Tuple5(t1, t2, t3, t4, t5)) 105 | } 106 | } 107 | 108 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 109 | mediator.setValueIfNotEqual(Tuple6(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" })) 110 | 111 | mediator.addSource(f1) { t1: T1 -> 112 | val (_, t2, t3, t4, t5, t6) = mediator.value!! 113 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 114 | } 115 | 116 | mediator.addSource(f2) { t2: T2 -> 117 | val (t1, _, t3, t4, t5, t6) = mediator.value!! 118 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 119 | } 120 | 121 | mediator.addSource(f3) { t3: T3 -> 122 | val (t1, t2, _, t4, t5, t6) = mediator.value!! 123 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 124 | } 125 | 126 | mediator.addSource(f4) { t4: T4 -> 127 | val (t1, t2, t3, _, t5, t6) = mediator.value!! 128 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 129 | } 130 | 131 | mediator.addSource(f5) { t5: T5 -> 132 | val (t1, t2, t3, t4, _, t6) = mediator.value!! 133 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 134 | } 135 | 136 | mediator.addSource(f6) { t6: T6 -> 137 | val (t1, t2, t3, t4, t5, _) = mediator.value!! 138 | mediator.setValueIfNotEqual(Tuple6(t1, t2, t3, t4, t5, t6)) 139 | } 140 | } 141 | 142 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 143 | mediator.setValueIfNotEqual(Tuple7(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" })) 144 | 145 | mediator.addSource(f1) { t1: T1 -> 146 | val (_, t2, t3, t4, t5, t6, t7) = mediator.value!! 147 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 148 | } 149 | 150 | mediator.addSource(f2) { t2: T2 -> 151 | val (t1, _, t3, t4, t5, t6, t7) = mediator.value!! 152 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 153 | } 154 | 155 | mediator.addSource(f3) { t3: T3 -> 156 | val (t1, t2, _, t4, t5, t6, t7) = mediator.value!! 157 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 158 | } 159 | 160 | mediator.addSource(f4) { t4: T4 -> 161 | val (t1, t2, t3, _, t5, t6, t7) = mediator.value!! 162 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 163 | } 164 | 165 | mediator.addSource(f5) { t5: T5 -> 166 | val (t1, t2, t3, t4, _, t6, t7) = mediator.value!! 167 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 168 | } 169 | 170 | mediator.addSource(f6) { t6: T6 -> 171 | val (t1, t2, t3, t4, t5, _, t7) = mediator.value!! 172 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 173 | } 174 | 175 | mediator.addSource(f7) { t7: T7 -> 176 | val (t1, t2, t3, t4, t5, t6, _) = mediator.value!! 177 | mediator.setValueIfNotEqual(Tuple7(t1, t2, t3, t4, t5, t6, t7)) 178 | } 179 | } 180 | 181 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 182 | mediator.setValueIfNotEqual(Tuple8(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" })) 183 | 184 | mediator.addSource(f1) { t1: T1 -> 185 | val (_, t2, t3, t4, t5, t6, t7, t8) = mediator.value!! 186 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 187 | } 188 | 189 | mediator.addSource(f2) { t2: T2 -> 190 | val (t1, _, t3, t4, t5, t6, t7, t8) = mediator.value!! 191 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 192 | } 193 | 194 | mediator.addSource(f3) { t3: T3 -> 195 | val (t1, t2, _, t4, t5, t6, t7, t8) = mediator.value!! 196 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 197 | } 198 | 199 | mediator.addSource(f4) { t4: T4 -> 200 | val (t1, t2, t3, _, t5, t6, t7, t8) = mediator.value!! 201 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 202 | } 203 | 204 | mediator.addSource(f5) { t5: T5 -> 205 | val (t1, t2, t3, t4, _, t6, t7, t8) = mediator.value!! 206 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 207 | } 208 | 209 | mediator.addSource(f6) { t6: T6 -> 210 | val (t1, t2, t3, t4, t5, _, t7, t8) = mediator.value!! 211 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 212 | } 213 | 214 | mediator.addSource(f7) { t7: T7 -> 215 | val (t1, t2, t3, t4, t5, t6, _, t8) = mediator.value!! 216 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 217 | } 218 | 219 | mediator.addSource(f8) { t8: T8 -> 220 | val (t1, t2, t3, t4, t5, t6, t7, _) = mediator.value!! 221 | mediator.setValueIfNotEqual(Tuple8(t1, t2, t3, t4, t5, t6, t7, t8)) 222 | } 223 | } 224 | 225 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 226 | mediator.setValueIfNotEqual(Tuple9(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" })) 227 | 228 | mediator.addSource(f1) { t1: T1 -> 229 | val (_, t2, t3, t4, t5, t6, t7, t8, t9) = mediator.value!! 230 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 231 | } 232 | 233 | mediator.addSource(f2) { t2: T2 -> 234 | val (t1, _, t3, t4, t5, t6, t7, t8, t9) = mediator.value!! 235 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 236 | } 237 | 238 | mediator.addSource(f3) { t3: T3 -> 239 | val (t1, t2, _, t4, t5, t6, t7, t8, t9) = mediator.value!! 240 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 241 | } 242 | 243 | mediator.addSource(f4) { t4: T4 -> 244 | val (t1, t2, t3, _, t5, t6, t7, t8, t9) = mediator.value!! 245 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 246 | } 247 | 248 | mediator.addSource(f5) { t5: T5 -> 249 | val (t1, t2, t3, t4, _, t6, t7, t8, t9) = mediator.value!! 250 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 251 | } 252 | 253 | mediator.addSource(f6) { t6: T6 -> 254 | val (t1, t2, t3, t4, t5, _, t7, t8, t9) = mediator.value!! 255 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 256 | } 257 | 258 | mediator.addSource(f7) { t7: T7 -> 259 | val (t1, t2, t3, t4, t5, t6, _, t8, t9) = mediator.value!! 260 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 261 | } 262 | 263 | mediator.addSource(f8) { t8: T8 -> 264 | val (t1, t2, t3, t4, t5, t6, t7, _, t9) = mediator.value!! 265 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 266 | } 267 | 268 | mediator.addSource(f9) { t9: T9 -> 269 | val (t1, t2, t3, t4, t5, t6, t7, t8, _) = mediator.value!! 270 | mediator.setValueIfNotEqual(Tuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) 271 | } 272 | } 273 | 274 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 275 | mediator.setValueIfNotEqual(Tuple10(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" })) 276 | 277 | mediator.addSource(f1) { t1: T1 -> 278 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 279 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 280 | } 281 | 282 | mediator.addSource(f2) { t2: T2 -> 283 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 284 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 285 | } 286 | 287 | mediator.addSource(f3) { t3: T3 -> 288 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10) = mediator.value!! 289 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 290 | } 291 | 292 | mediator.addSource(f4) { t4: T4 -> 293 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10) = mediator.value!! 294 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 295 | } 296 | 297 | mediator.addSource(f5) { t5: T5 -> 298 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10) = mediator.value!! 299 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 300 | } 301 | 302 | mediator.addSource(f6) { t6: T6 -> 303 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10) = mediator.value!! 304 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 305 | } 306 | 307 | mediator.addSource(f7) { t7: T7 -> 308 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10) = mediator.value!! 309 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 310 | } 311 | 312 | mediator.addSource(f8) { t8: T8 -> 313 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10) = mediator.value!! 314 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 315 | } 316 | 317 | mediator.addSource(f9) { t9: T9 -> 318 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10) = mediator.value!! 319 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 320 | } 321 | 322 | mediator.addSource(f10) { t10: T10 -> 323 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _) = mediator.value!! 324 | mediator.setValueIfNotEqual(Tuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) 325 | } 326 | } 327 | 328 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 329 | mediator.setValueIfNotEqual(Tuple11(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" })) 330 | 331 | mediator.addSource(f1) { t1: T1 -> 332 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 333 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 334 | } 335 | 336 | mediator.addSource(f2) { t2: T2 -> 337 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 338 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 339 | } 340 | 341 | mediator.addSource(f3) { t3: T3 -> 342 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 343 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 344 | } 345 | 346 | mediator.addSource(f4) { t4: T4 -> 347 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11) = mediator.value!! 348 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 349 | } 350 | 351 | mediator.addSource(f5) { t5: T5 -> 352 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11) = mediator.value!! 353 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 354 | } 355 | 356 | mediator.addSource(f6) { t6: T6 -> 357 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11) = mediator.value!! 358 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 359 | } 360 | 361 | mediator.addSource(f7) { t7: T7 -> 362 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11) = mediator.value!! 363 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 364 | } 365 | 366 | mediator.addSource(f8) { t8: T8 -> 367 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11) = mediator.value!! 368 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 369 | } 370 | 371 | mediator.addSource(f9) { t9: T9 -> 372 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11) = mediator.value!! 373 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 374 | } 375 | 376 | mediator.addSource(f10) { t10: T10 -> 377 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11) = mediator.value!! 378 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 379 | } 380 | 381 | mediator.addSource(f11) { t11: T11 -> 382 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _) = mediator.value!! 383 | mediator.setValueIfNotEqual(Tuple11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)) 384 | } 385 | } 386 | 387 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 388 | mediator.setValueIfNotEqual(Tuple12(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" }, checkNotNull(f12.value) { "Value of f12 was null" })) 389 | 390 | mediator.addSource(f1) { t1: T1 -> 391 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 392 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 393 | } 394 | 395 | mediator.addSource(f2) { t2: T2 -> 396 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 397 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 398 | } 399 | 400 | mediator.addSource(f3) { t3: T3 -> 401 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 402 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 403 | } 404 | 405 | mediator.addSource(f4) { t4: T4 -> 406 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 407 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 408 | } 409 | 410 | mediator.addSource(f5) { t5: T5 -> 411 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12) = mediator.value!! 412 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 413 | } 414 | 415 | mediator.addSource(f6) { t6: T6 -> 416 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12) = mediator.value!! 417 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 418 | } 419 | 420 | mediator.addSource(f7) { t7: T7 -> 421 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12) = mediator.value!! 422 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 423 | } 424 | 425 | mediator.addSource(f8) { t8: T8 -> 426 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12) = mediator.value!! 427 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 428 | } 429 | 430 | mediator.addSource(f9) { t9: T9 -> 431 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12) = mediator.value!! 432 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 433 | } 434 | 435 | mediator.addSource(f10) { t10: T10 -> 436 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12) = mediator.value!! 437 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 438 | } 439 | 440 | mediator.addSource(f11) { t11: T11 -> 441 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12) = mediator.value!! 442 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 443 | } 444 | 445 | mediator.addSource(f12) { t12: T12 -> 446 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _) = mediator.value!! 447 | mediator.setValueIfNotEqual(Tuple12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)) 448 | } 449 | } 450 | 451 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 452 | mediator.setValueIfNotEqual(Tuple13(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" }, checkNotNull(f12.value) { "Value of f12 was null" }, checkNotNull(f13.value) { "Value of f13 was null" })) 453 | 454 | mediator.addSource(f1) { t1: T1 -> 455 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 456 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 457 | } 458 | 459 | mediator.addSource(f2) { t2: T2 -> 460 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 461 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 462 | } 463 | 464 | mediator.addSource(f3) { t3: T3 -> 465 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 466 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 467 | } 468 | 469 | mediator.addSource(f4) { t4: T4 -> 470 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 471 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 472 | } 473 | 474 | mediator.addSource(f5) { t5: T5 -> 475 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 476 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 477 | } 478 | 479 | mediator.addSource(f6) { t6: T6 -> 480 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13) = mediator.value!! 481 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 482 | } 483 | 484 | mediator.addSource(f7) { t7: T7 -> 485 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13) = mediator.value!! 486 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 487 | } 488 | 489 | mediator.addSource(f8) { t8: T8 -> 490 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13) = mediator.value!! 491 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 492 | } 493 | 494 | mediator.addSource(f9) { t9: T9 -> 495 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13) = mediator.value!! 496 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 497 | } 498 | 499 | mediator.addSource(f10) { t10: T10 -> 500 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13) = mediator.value!! 501 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 502 | } 503 | 504 | mediator.addSource(f11) { t11: T11 -> 505 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13) = mediator.value!! 506 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 507 | } 508 | 509 | mediator.addSource(f12) { t12: T12 -> 510 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13) = mediator.value!! 511 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 512 | } 513 | 514 | mediator.addSource(f13) { t13: T13 -> 515 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _) = mediator.value!! 516 | mediator.setValueIfNotEqual(Tuple13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)) 517 | } 518 | } 519 | 520 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 521 | mediator.setValueIfNotEqual(Tuple14(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" }, checkNotNull(f12.value) { "Value of f12 was null" }, checkNotNull(f13.value) { "Value of f13 was null" }, checkNotNull(f14.value) { "Value of f14 was null" })) 522 | 523 | mediator.addSource(f1) { t1: T1 -> 524 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 525 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 526 | } 527 | 528 | mediator.addSource(f2) { t2: T2 -> 529 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 530 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 531 | } 532 | 533 | mediator.addSource(f3) { t3: T3 -> 534 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 535 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 536 | } 537 | 538 | mediator.addSource(f4) { t4: T4 -> 539 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 540 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 541 | } 542 | 543 | mediator.addSource(f5) { t5: T5 -> 544 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 545 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 546 | } 547 | 548 | mediator.addSource(f6) { t6: T6 -> 549 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 550 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 551 | } 552 | 553 | mediator.addSource(f7) { t7: T7 -> 554 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14) = mediator.value!! 555 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 556 | } 557 | 558 | mediator.addSource(f8) { t8: T8 -> 559 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14) = mediator.value!! 560 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 561 | } 562 | 563 | mediator.addSource(f9) { t9: T9 -> 564 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14) = mediator.value!! 565 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 566 | } 567 | 568 | mediator.addSource(f10) { t10: T10 -> 569 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14) = mediator.value!! 570 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 571 | } 572 | 573 | mediator.addSource(f11) { t11: T11 -> 574 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14) = mediator.value!! 575 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 576 | } 577 | 578 | mediator.addSource(f12) { t12: T12 -> 579 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14) = mediator.value!! 580 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 581 | } 582 | 583 | mediator.addSource(f13) { t13: T13 -> 584 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14) = mediator.value!! 585 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 586 | } 587 | 588 | mediator.addSource(f14) { t14: T14 -> 589 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _) = mediator.value!! 590 | mediator.setValueIfNotEqual(Tuple14(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14)) 591 | } 592 | } 593 | 594 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 595 | mediator.setValueIfNotEqual(Tuple15(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" }, checkNotNull(f12.value) { "Value of f12 was null" }, checkNotNull(f13.value) { "Value of f13 was null" }, checkNotNull(f14.value) { "Value of f14 was null" }, checkNotNull(f15.value) { "Value of f15 was null" })) 596 | 597 | mediator.addSource(f1) { t1: T1 -> 598 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 599 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 600 | } 601 | 602 | mediator.addSource(f2) { t2: T2 -> 603 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 604 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 605 | } 606 | 607 | mediator.addSource(f3) { t3: T3 -> 608 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 609 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 610 | } 611 | 612 | mediator.addSource(f4) { t4: T4 -> 613 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 614 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 615 | } 616 | 617 | mediator.addSource(f5) { t5: T5 -> 618 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 619 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 620 | } 621 | 622 | mediator.addSource(f6) { t6: T6 -> 623 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 624 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 625 | } 626 | 627 | mediator.addSource(f7) { t7: T7 -> 628 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 629 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 630 | } 631 | 632 | mediator.addSource(f8) { t8: T8 -> 633 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14, t15) = mediator.value!! 634 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 635 | } 636 | 637 | mediator.addSource(f9) { t9: T9 -> 638 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14, t15) = mediator.value!! 639 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 640 | } 641 | 642 | mediator.addSource(f10) { t10: T10 -> 643 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14, t15) = mediator.value!! 644 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 645 | } 646 | 647 | mediator.addSource(f11) { t11: T11 -> 648 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14, t15) = mediator.value!! 649 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 650 | } 651 | 652 | mediator.addSource(f12) { t12: T12 -> 653 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14, t15) = mediator.value!! 654 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 655 | } 656 | 657 | mediator.addSource(f13) { t13: T13 -> 658 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14, t15) = mediator.value!! 659 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 660 | } 661 | 662 | mediator.addSource(f14) { t14: T14 -> 663 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _, t15) = mediator.value!! 664 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 665 | } 666 | 667 | mediator.addSource(f15) { t15: T15 -> 668 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, _) = mediator.value!! 669 | mediator.setValueIfNotEqual(Tuple15(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)) 670 | } 671 | } 672 | 673 | fun combineTupleNonNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData, f16: LiveData): LiveData> = MediatorLiveData>().also { mediator -> 674 | mediator.setValueIfNotEqual(Tuple16(checkNotNull(f1.value) { "Value of f1 was null" }, checkNotNull(f2.value) { "Value of f2 was null" }, checkNotNull(f3.value) { "Value of f3 was null" }, checkNotNull(f4.value) { "Value of f4 was null" }, checkNotNull(f5.value) { "Value of f5 was null" }, checkNotNull(f6.value) { "Value of f6 was null" }, checkNotNull(f7.value) { "Value of f7 was null" }, checkNotNull(f8.value) { "Value of f8 was null" }, checkNotNull(f9.value) { "Value of f9 was null" }, checkNotNull(f10.value) { "Value of f10 was null" }, checkNotNull(f11.value) { "Value of f11 was null" }, checkNotNull(f12.value) { "Value of f12 was null" }, checkNotNull(f13.value) { "Value of f13 was null" }, checkNotNull(f14.value) { "Value of f14 was null" }, checkNotNull(f15.value) { "Value of f15 was null" }, checkNotNull(f16.value) { "Value of f16 was null" })) 675 | 676 | mediator.addSource(f1) { t1: T1 -> 677 | val (_, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 678 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 679 | } 680 | 681 | mediator.addSource(f2) { t2: T2 -> 682 | val (t1, _, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 683 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 684 | } 685 | 686 | mediator.addSource(f3) { t3: T3 -> 687 | val (t1, t2, _, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 688 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 689 | } 690 | 691 | mediator.addSource(f4) { t4: T4 -> 692 | val (t1, t2, t3, _, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 693 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 694 | } 695 | 696 | mediator.addSource(f5) { t5: T5 -> 697 | val (t1, t2, t3, t4, _, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 698 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 699 | } 700 | 701 | mediator.addSource(f6) { t6: T6 -> 702 | val (t1, t2, t3, t4, t5, _, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 703 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 704 | } 705 | 706 | mediator.addSource(f7) { t7: T7 -> 707 | val (t1, t2, t3, t4, t5, t6, _, t8, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 708 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 709 | } 710 | 711 | mediator.addSource(f8) { t8: T8 -> 712 | val (t1, t2, t3, t4, t5, t6, t7, _, t9, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 713 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 714 | } 715 | 716 | mediator.addSource(f9) { t9: T9 -> 717 | val (t1, t2, t3, t4, t5, t6, t7, t8, _, t10, t11, t12, t13, t14, t15, t16) = mediator.value!! 718 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 719 | } 720 | 721 | mediator.addSource(f10) { t10: T10 -> 722 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, _, t11, t12, t13, t14, t15, t16) = mediator.value!! 723 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 724 | } 725 | 726 | mediator.addSource(f11) { t11: T11 -> 727 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, _, t12, t13, t14, t15, t16) = mediator.value!! 728 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 729 | } 730 | 731 | mediator.addSource(f12) { t12: T12 -> 732 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _, t13, t14, t15, t16) = mediator.value!! 733 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 734 | } 735 | 736 | mediator.addSource(f13) { t13: T13 -> 737 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, _, t14, t15, t16) = mediator.value!! 738 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 739 | } 740 | 741 | mediator.addSource(f14) { t14: T14 -> 742 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, _, t15, t16) = mediator.value!! 743 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 744 | } 745 | 746 | mediator.addSource(f15) { t15: T15 -> 747 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, _, t16) = mediator.value!! 748 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 749 | } 750 | 751 | mediator.addSource(f16) { t16: T16 -> 752 | val (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, _) = mediator.value!! 753 | mediator.setValueIfNotEqual(Tuple16(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)) 754 | } 755 | } -------------------------------------------------------------------------------- /livedata-combinetuple-kt/src/main/java/com/zhuinden/livedatacombinetuplekt/LiveDataCombineTupleSkipNull.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("NAME_SHADOWING") 2 | package com.zhuinden.livedatacombinetuplekt 3 | 4 | import androidx.lifecycle.LiveData 5 | import androidx.lifecycle.MediatorLiveData 6 | import com.zhuinden.tupleskt.* 7 | 8 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 9 | val v1 = f1.value 10 | val v2 = f2.value 11 | 12 | if (v1 != null && v2 != null) { 13 | mediator.setValueIfNotEqual(Pair(v1, v2)) 14 | } 15 | 16 | mediator.addSource(f1) { t1: T1? -> 17 | val v1 = t1 18 | val v2 = f2.value 19 | 20 | if (v1 != null && v2 != null) { 21 | mediator.setValueIfNotEqual(Pair(v1, v2)) 22 | } 23 | } 24 | 25 | mediator.addSource(f2) { t2: T2? -> 26 | val v1 = f1.value 27 | val v2 = t2 28 | 29 | if (v1 != null && v2 != null) { 30 | mediator.setValueIfNotEqual(Pair(v1, v2)) 31 | } 32 | } 33 | } 34 | 35 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 36 | val v1 = f1.value 37 | val v2 = f2.value 38 | val v3 = f3.value 39 | 40 | if (v1 != null && v2 != null && v3 != null) { 41 | mediator.setValueIfNotEqual(Triple(v1, v2, v3)) 42 | } 43 | 44 | mediator.addSource(f1) { t1: T1? -> 45 | val v1 = t1 46 | val v2 = f2.value 47 | val v3 = f3.value 48 | 49 | if (v1 != null && v2 != null && v3 != null) { 50 | mediator.setValueIfNotEqual(Triple(v1, v2, v3)) 51 | } 52 | } 53 | 54 | mediator.addSource(f2) { t2: T2? -> 55 | val v1 = f1.value 56 | val v2 = t2 57 | val v3 = f3.value 58 | 59 | if (v1 != null && v2 != null && v3 != null) { 60 | mediator.setValueIfNotEqual(Triple(v1, v2, v3)) 61 | } 62 | } 63 | 64 | mediator.addSource(f3) { t3: T3? -> 65 | val v1 = f1.value 66 | val v2 = f2.value 67 | val v3 = t3 68 | 69 | if (v1 != null && v2 != null && v3 != null) { 70 | mediator.setValueIfNotEqual(Triple(v1, v2, v3)) 71 | } 72 | } 73 | } 74 | 75 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 76 | val v1 = f1.value 77 | val v2 = f2.value 78 | val v3 = f3.value 79 | val v4 = f4.value 80 | 81 | if (v1 != null && v2 != null && v3 != null && v4 != null) { 82 | mediator.setValueIfNotEqual(Tuple4(v1, v2, v3, v4)) 83 | } 84 | 85 | mediator.addSource(f1) { t1: T1? -> 86 | val v1 = t1 87 | val v2 = f2.value 88 | val v3 = f3.value 89 | val v4 = f4.value 90 | 91 | if (v1 != null && v2 != null && v3 != null && v4 != null) { 92 | mediator.setValueIfNotEqual(Tuple4(v1, v2, v3, v4)) 93 | } 94 | } 95 | 96 | mediator.addSource(f2) { t2: T2? -> 97 | val v1 = f1.value 98 | val v2 = t2 99 | val v3 = f3.value 100 | val v4 = f4.value 101 | 102 | if (v1 != null && v2 != null && v3 != null && v4 != null) { 103 | mediator.setValueIfNotEqual(Tuple4(v1, v2, v3, v4)) 104 | } 105 | } 106 | 107 | mediator.addSource(f3) { t3: T3? -> 108 | val v1 = f1.value 109 | val v2 = f2.value 110 | val v3 = t3 111 | val v4 = f4.value 112 | 113 | if (v1 != null && v2 != null && v3 != null && v4 != null) { 114 | mediator.setValueIfNotEqual(Tuple4(v1, v2, v3, v4)) 115 | } 116 | } 117 | 118 | mediator.addSource(f4) { t4: T4? -> 119 | val v1 = f1.value 120 | val v2 = f2.value 121 | val v3 = f3.value 122 | val v4 = t4 123 | 124 | if (v1 != null && v2 != null && v3 != null && v4 != null) { 125 | mediator.setValueIfNotEqual(Tuple4(v1, v2, v3, v4)) 126 | } 127 | } 128 | } 129 | 130 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 131 | val v1 = f1.value 132 | val v2 = f2.value 133 | val v3 = f3.value 134 | val v4 = f4.value 135 | val v5 = f5.value 136 | 137 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 138 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 139 | } 140 | 141 | mediator.addSource(f1) { t1: T1? -> 142 | val v1 = t1 143 | val v2 = f2.value 144 | val v3 = f3.value 145 | val v4 = f4.value 146 | val v5 = f5.value 147 | 148 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 149 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 150 | } 151 | } 152 | 153 | mediator.addSource(f2) { t2: T2? -> 154 | val v1 = f1.value 155 | val v2 = t2 156 | val v3 = f3.value 157 | val v4 = f4.value 158 | val v5 = f5.value 159 | 160 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 161 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 162 | } 163 | } 164 | 165 | mediator.addSource(f3) { t3: T3? -> 166 | val v1 = f1.value 167 | val v2 = f2.value 168 | val v3 = t3 169 | val v4 = f4.value 170 | val v5 = f5.value 171 | 172 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 173 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 174 | } 175 | } 176 | 177 | mediator.addSource(f4) { t4: T4? -> 178 | val v1 = f1.value 179 | val v2 = f2.value 180 | val v3 = f3.value 181 | val v4 = t4 182 | val v5 = f5.value 183 | 184 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 185 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 186 | } 187 | } 188 | 189 | mediator.addSource(f5) { t5: T5? -> 190 | val v1 = f1.value 191 | val v2 = f2.value 192 | val v3 = f3.value 193 | val v4 = f4.value 194 | val v5 = t5 195 | 196 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null) { 197 | mediator.setValueIfNotEqual(Tuple5(v1, v2, v3, v4, v5)) 198 | } 199 | } 200 | } 201 | 202 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 203 | val v1 = f1.value 204 | val v2 = f2.value 205 | val v3 = f3.value 206 | val v4 = f4.value 207 | val v5 = f5.value 208 | val v6 = f6.value 209 | 210 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 211 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 212 | } 213 | 214 | mediator.addSource(f1) { t1: T1? -> 215 | val v1 = t1 216 | val v2 = f2.value 217 | val v3 = f3.value 218 | val v4 = f4.value 219 | val v5 = f5.value 220 | val v6 = f6.value 221 | 222 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 223 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 224 | } 225 | } 226 | 227 | mediator.addSource(f2) { t2: T2? -> 228 | val v1 = f1.value 229 | val v2 = t2 230 | val v3 = f3.value 231 | val v4 = f4.value 232 | val v5 = f5.value 233 | val v6 = f6.value 234 | 235 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 236 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 237 | } 238 | } 239 | 240 | mediator.addSource(f3) { t3: T3? -> 241 | val v1 = f1.value 242 | val v2 = f2.value 243 | val v3 = t3 244 | val v4 = f4.value 245 | val v5 = f5.value 246 | val v6 = f6.value 247 | 248 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 249 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 250 | } 251 | } 252 | 253 | mediator.addSource(f4) { t4: T4? -> 254 | val v1 = f1.value 255 | val v2 = f2.value 256 | val v3 = f3.value 257 | val v4 = t4 258 | val v5 = f5.value 259 | val v6 = f6.value 260 | 261 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 262 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 263 | } 264 | } 265 | 266 | mediator.addSource(f5) { t5: T5? -> 267 | val v1 = f1.value 268 | val v2 = f2.value 269 | val v3 = f3.value 270 | val v4 = f4.value 271 | val v5 = t5 272 | val v6 = f6.value 273 | 274 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 275 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 276 | } 277 | } 278 | 279 | mediator.addSource(f6) { t6: T6? -> 280 | val v1 = f1.value 281 | val v2 = f2.value 282 | val v3 = f3.value 283 | val v4 = f4.value 284 | val v5 = f5.value 285 | val v6 = t6 286 | 287 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null) { 288 | mediator.setValueIfNotEqual(Tuple6(v1, v2, v3, v4, v5, v6)) 289 | } 290 | } 291 | } 292 | 293 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 294 | val v1 = f1.value 295 | val v2 = f2.value 296 | val v3 = f3.value 297 | val v4 = f4.value 298 | val v5 = f5.value 299 | val v6 = f6.value 300 | val v7 = f7.value 301 | 302 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 303 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 304 | } 305 | 306 | mediator.addSource(f1) { t1: T1? -> 307 | val v1 = t1 308 | val v2 = f2.value 309 | val v3 = f3.value 310 | val v4 = f4.value 311 | val v5 = f5.value 312 | val v6 = f6.value 313 | val v7 = f7.value 314 | 315 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 316 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 317 | } 318 | } 319 | 320 | mediator.addSource(f2) { t2: T2? -> 321 | val v1 = f1.value 322 | val v2 = t2 323 | val v3 = f3.value 324 | val v4 = f4.value 325 | val v5 = f5.value 326 | val v6 = f6.value 327 | val v7 = f7.value 328 | 329 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 330 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 331 | } 332 | } 333 | 334 | mediator.addSource(f3) { t3: T3? -> 335 | val v1 = f1.value 336 | val v2 = f2.value 337 | val v3 = t3 338 | val v4 = f4.value 339 | val v5 = f5.value 340 | val v6 = f6.value 341 | val v7 = f7.value 342 | 343 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 344 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 345 | } 346 | } 347 | 348 | mediator.addSource(f4) { t4: T4? -> 349 | val v1 = f1.value 350 | val v2 = f2.value 351 | val v3 = f3.value 352 | val v4 = t4 353 | val v5 = f5.value 354 | val v6 = f6.value 355 | val v7 = f7.value 356 | 357 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 358 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 359 | } 360 | } 361 | 362 | mediator.addSource(f5) { t5: T5? -> 363 | val v1 = f1.value 364 | val v2 = f2.value 365 | val v3 = f3.value 366 | val v4 = f4.value 367 | val v5 = t5 368 | val v6 = f6.value 369 | val v7 = f7.value 370 | 371 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 372 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 373 | } 374 | } 375 | 376 | mediator.addSource(f6) { t6: T6? -> 377 | val v1 = f1.value 378 | val v2 = f2.value 379 | val v3 = f3.value 380 | val v4 = f4.value 381 | val v5 = f5.value 382 | val v6 = t6 383 | val v7 = f7.value 384 | 385 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 386 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 387 | } 388 | } 389 | 390 | mediator.addSource(f7) { t7: T7? -> 391 | val v1 = f1.value 392 | val v2 = f2.value 393 | val v3 = f3.value 394 | val v4 = f4.value 395 | val v5 = f5.value 396 | val v6 = f6.value 397 | val v7 = t7 398 | 399 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null) { 400 | mediator.setValueIfNotEqual(Tuple7(v1, v2, v3, v4, v5, v6, v7)) 401 | } 402 | } 403 | } 404 | 405 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 406 | val v1 = f1.value 407 | val v2 = f2.value 408 | val v3 = f3.value 409 | val v4 = f4.value 410 | val v5 = f5.value 411 | val v6 = f6.value 412 | val v7 = f7.value 413 | val v8 = f8.value 414 | 415 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 416 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 417 | } 418 | 419 | mediator.addSource(f1) { t1: T1? -> 420 | val v1 = t1 421 | val v2 = f2.value 422 | val v3 = f3.value 423 | val v4 = f4.value 424 | val v5 = f5.value 425 | val v6 = f6.value 426 | val v7 = f7.value 427 | val v8 = f8.value 428 | 429 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 430 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 431 | } 432 | } 433 | 434 | mediator.addSource(f2) { t2: T2? -> 435 | val v1 = f1.value 436 | val v2 = t2 437 | val v3 = f3.value 438 | val v4 = f4.value 439 | val v5 = f5.value 440 | val v6 = f6.value 441 | val v7 = f7.value 442 | val v8 = f8.value 443 | 444 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 445 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 446 | } 447 | } 448 | 449 | mediator.addSource(f3) { t3: T3? -> 450 | val v1 = f1.value 451 | val v2 = f2.value 452 | val v3 = t3 453 | val v4 = f4.value 454 | val v5 = f5.value 455 | val v6 = f6.value 456 | val v7 = f7.value 457 | val v8 = f8.value 458 | 459 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 460 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 461 | } 462 | } 463 | 464 | mediator.addSource(f4) { t4: T4? -> 465 | val v1 = f1.value 466 | val v2 = f2.value 467 | val v3 = f3.value 468 | val v4 = t4 469 | val v5 = f5.value 470 | val v6 = f6.value 471 | val v7 = f7.value 472 | val v8 = f8.value 473 | 474 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 475 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 476 | } 477 | } 478 | 479 | mediator.addSource(f5) { t5: T5? -> 480 | val v1 = f1.value 481 | val v2 = f2.value 482 | val v3 = f3.value 483 | val v4 = f4.value 484 | val v5 = t5 485 | val v6 = f6.value 486 | val v7 = f7.value 487 | val v8 = f8.value 488 | 489 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 490 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 491 | } 492 | } 493 | 494 | mediator.addSource(f6) { t6: T6? -> 495 | val v1 = f1.value 496 | val v2 = f2.value 497 | val v3 = f3.value 498 | val v4 = f4.value 499 | val v5 = f5.value 500 | val v6 = t6 501 | val v7 = f7.value 502 | val v8 = f8.value 503 | 504 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 505 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 506 | } 507 | } 508 | 509 | mediator.addSource(f7) { t7: T7? -> 510 | val v1 = f1.value 511 | val v2 = f2.value 512 | val v3 = f3.value 513 | val v4 = f4.value 514 | val v5 = f5.value 515 | val v6 = f6.value 516 | val v7 = t7 517 | val v8 = f8.value 518 | 519 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 520 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 521 | } 522 | } 523 | 524 | mediator.addSource(f8) { t8: T8? -> 525 | val v1 = f1.value 526 | val v2 = f2.value 527 | val v3 = f3.value 528 | val v4 = f4.value 529 | val v5 = f5.value 530 | val v6 = f6.value 531 | val v7 = f7.value 532 | val v8 = t8 533 | 534 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null) { 535 | mediator.setValueIfNotEqual(Tuple8(v1, v2, v3, v4, v5, v6, v7, v8)) 536 | } 537 | } 538 | } 539 | 540 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 541 | val v1 = f1.value 542 | val v2 = f2.value 543 | val v3 = f3.value 544 | val v4 = f4.value 545 | val v5 = f5.value 546 | val v6 = f6.value 547 | val v7 = f7.value 548 | val v8 = f8.value 549 | val v9 = f9.value 550 | 551 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 552 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 553 | } 554 | 555 | mediator.addSource(f1) { t1: T1? -> 556 | val v1 = t1 557 | val v2 = f2.value 558 | val v3 = f3.value 559 | val v4 = f4.value 560 | val v5 = f5.value 561 | val v6 = f6.value 562 | val v7 = f7.value 563 | val v8 = f8.value 564 | val v9 = f9.value 565 | 566 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 567 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 568 | } 569 | } 570 | 571 | mediator.addSource(f2) { t2: T2? -> 572 | val v1 = f1.value 573 | val v2 = t2 574 | val v3 = f3.value 575 | val v4 = f4.value 576 | val v5 = f5.value 577 | val v6 = f6.value 578 | val v7 = f7.value 579 | val v8 = f8.value 580 | val v9 = f9.value 581 | 582 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 583 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 584 | } 585 | } 586 | 587 | mediator.addSource(f3) { t3: T3? -> 588 | val v1 = f1.value 589 | val v2 = f2.value 590 | val v3 = t3 591 | val v4 = f4.value 592 | val v5 = f5.value 593 | val v6 = f6.value 594 | val v7 = f7.value 595 | val v8 = f8.value 596 | val v9 = f9.value 597 | 598 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 599 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 600 | } 601 | } 602 | 603 | mediator.addSource(f4) { t4: T4? -> 604 | val v1 = f1.value 605 | val v2 = f2.value 606 | val v3 = f3.value 607 | val v4 = t4 608 | val v5 = f5.value 609 | val v6 = f6.value 610 | val v7 = f7.value 611 | val v8 = f8.value 612 | val v9 = f9.value 613 | 614 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 615 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 616 | } 617 | } 618 | 619 | mediator.addSource(f5) { t5: T5? -> 620 | val v1 = f1.value 621 | val v2 = f2.value 622 | val v3 = f3.value 623 | val v4 = f4.value 624 | val v5 = t5 625 | val v6 = f6.value 626 | val v7 = f7.value 627 | val v8 = f8.value 628 | val v9 = f9.value 629 | 630 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 631 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 632 | } 633 | } 634 | 635 | mediator.addSource(f6) { t6: T6? -> 636 | val v1 = f1.value 637 | val v2 = f2.value 638 | val v3 = f3.value 639 | val v4 = f4.value 640 | val v5 = f5.value 641 | val v6 = t6 642 | val v7 = f7.value 643 | val v8 = f8.value 644 | val v9 = f9.value 645 | 646 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 647 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 648 | } 649 | } 650 | 651 | mediator.addSource(f7) { t7: T7? -> 652 | val v1 = f1.value 653 | val v2 = f2.value 654 | val v3 = f3.value 655 | val v4 = f4.value 656 | val v5 = f5.value 657 | val v6 = f6.value 658 | val v7 = t7 659 | val v8 = f8.value 660 | val v9 = f9.value 661 | 662 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 663 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 664 | } 665 | } 666 | 667 | mediator.addSource(f8) { t8: T8? -> 668 | val v1 = f1.value 669 | val v2 = f2.value 670 | val v3 = f3.value 671 | val v4 = f4.value 672 | val v5 = f5.value 673 | val v6 = f6.value 674 | val v7 = f7.value 675 | val v8 = t8 676 | val v9 = f9.value 677 | 678 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 679 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 680 | } 681 | } 682 | 683 | mediator.addSource(f9) { t9: T9? -> 684 | val v1 = f1.value 685 | val v2 = f2.value 686 | val v3 = f3.value 687 | val v4 = f4.value 688 | val v5 = f5.value 689 | val v6 = f6.value 690 | val v7 = f7.value 691 | val v8 = f8.value 692 | val v9 = t9 693 | 694 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null) { 695 | mediator.setValueIfNotEqual(Tuple9(v1, v2, v3, v4, v5, v6, v7, v8, v9)) 696 | } 697 | } 698 | } 699 | 700 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 701 | val v1 = f1.value 702 | val v2 = f2.value 703 | val v3 = f3.value 704 | val v4 = f4.value 705 | val v5 = f5.value 706 | val v6 = f6.value 707 | val v7 = f7.value 708 | val v8 = f8.value 709 | val v9 = f9.value 710 | val v10 = f10.value 711 | 712 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 713 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 714 | } 715 | 716 | mediator.addSource(f1) { t1: T1? -> 717 | val v1 = t1 718 | val v2 = f2.value 719 | val v3 = f3.value 720 | val v4 = f4.value 721 | val v5 = f5.value 722 | val v6 = f6.value 723 | val v7 = f7.value 724 | val v8 = f8.value 725 | val v9 = f9.value 726 | val v10 = f10.value 727 | 728 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 729 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 730 | } 731 | } 732 | 733 | mediator.addSource(f2) { t2: T2? -> 734 | val v1 = f1.value 735 | val v2 = t2 736 | val v3 = f3.value 737 | val v4 = f4.value 738 | val v5 = f5.value 739 | val v6 = f6.value 740 | val v7 = f7.value 741 | val v8 = f8.value 742 | val v9 = f9.value 743 | val v10 = f10.value 744 | 745 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 746 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 747 | } 748 | } 749 | 750 | mediator.addSource(f3) { t3: T3? -> 751 | val v1 = f1.value 752 | val v2 = f2.value 753 | val v3 = t3 754 | val v4 = f4.value 755 | val v5 = f5.value 756 | val v6 = f6.value 757 | val v7 = f7.value 758 | val v8 = f8.value 759 | val v9 = f9.value 760 | val v10 = f10.value 761 | 762 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 763 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 764 | } 765 | } 766 | 767 | mediator.addSource(f4) { t4: T4? -> 768 | val v1 = f1.value 769 | val v2 = f2.value 770 | val v3 = f3.value 771 | val v4 = t4 772 | val v5 = f5.value 773 | val v6 = f6.value 774 | val v7 = f7.value 775 | val v8 = f8.value 776 | val v9 = f9.value 777 | val v10 = f10.value 778 | 779 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 780 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 781 | } 782 | } 783 | 784 | mediator.addSource(f5) { t5: T5? -> 785 | val v1 = f1.value 786 | val v2 = f2.value 787 | val v3 = f3.value 788 | val v4 = f4.value 789 | val v5 = t5 790 | val v6 = f6.value 791 | val v7 = f7.value 792 | val v8 = f8.value 793 | val v9 = f9.value 794 | val v10 = f10.value 795 | 796 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 797 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 798 | } 799 | } 800 | 801 | mediator.addSource(f6) { t6: T6? -> 802 | val v1 = f1.value 803 | val v2 = f2.value 804 | val v3 = f3.value 805 | val v4 = f4.value 806 | val v5 = f5.value 807 | val v6 = t6 808 | val v7 = f7.value 809 | val v8 = f8.value 810 | val v9 = f9.value 811 | val v10 = f10.value 812 | 813 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 814 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 815 | } 816 | } 817 | 818 | mediator.addSource(f7) { t7: T7? -> 819 | val v1 = f1.value 820 | val v2 = f2.value 821 | val v3 = f3.value 822 | val v4 = f4.value 823 | val v5 = f5.value 824 | val v6 = f6.value 825 | val v7 = t7 826 | val v8 = f8.value 827 | val v9 = f9.value 828 | val v10 = f10.value 829 | 830 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 831 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 832 | } 833 | } 834 | 835 | mediator.addSource(f8) { t8: T8? -> 836 | val v1 = f1.value 837 | val v2 = f2.value 838 | val v3 = f3.value 839 | val v4 = f4.value 840 | val v5 = f5.value 841 | val v6 = f6.value 842 | val v7 = f7.value 843 | val v8 = t8 844 | val v9 = f9.value 845 | val v10 = f10.value 846 | 847 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 848 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 849 | } 850 | } 851 | 852 | mediator.addSource(f9) { t9: T9? -> 853 | val v1 = f1.value 854 | val v2 = f2.value 855 | val v3 = f3.value 856 | val v4 = f4.value 857 | val v5 = f5.value 858 | val v6 = f6.value 859 | val v7 = f7.value 860 | val v8 = f8.value 861 | val v9 = t9 862 | val v10 = f10.value 863 | 864 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 865 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 866 | } 867 | } 868 | 869 | mediator.addSource(f10) { t10: T10? -> 870 | val v1 = f1.value 871 | val v2 = f2.value 872 | val v3 = f3.value 873 | val v4 = f4.value 874 | val v5 = f5.value 875 | val v6 = f6.value 876 | val v7 = f7.value 877 | val v8 = f8.value 878 | val v9 = f9.value 879 | val v10 = t10 880 | 881 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null) { 882 | mediator.setValueIfNotEqual(Tuple10(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) 883 | } 884 | } 885 | } 886 | 887 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 888 | val v1 = f1.value 889 | val v2 = f2.value 890 | val v3 = f3.value 891 | val v4 = f4.value 892 | val v5 = f5.value 893 | val v6 = f6.value 894 | val v7 = f7.value 895 | val v8 = f8.value 896 | val v9 = f9.value 897 | val v10 = f10.value 898 | val v11 = f11.value 899 | 900 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 901 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 902 | } 903 | 904 | mediator.addSource(f1) { t1: T1? -> 905 | val v1 = t1 906 | val v2 = f2.value 907 | val v3 = f3.value 908 | val v4 = f4.value 909 | val v5 = f5.value 910 | val v6 = f6.value 911 | val v7 = f7.value 912 | val v8 = f8.value 913 | val v9 = f9.value 914 | val v10 = f10.value 915 | val v11 = f11.value 916 | 917 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 918 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 919 | } 920 | } 921 | 922 | mediator.addSource(f2) { t2: T2? -> 923 | val v1 = f1.value 924 | val v2 = t2 925 | val v3 = f3.value 926 | val v4 = f4.value 927 | val v5 = f5.value 928 | val v6 = f6.value 929 | val v7 = f7.value 930 | val v8 = f8.value 931 | val v9 = f9.value 932 | val v10 = f10.value 933 | val v11 = f11.value 934 | 935 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 936 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 937 | } 938 | } 939 | 940 | mediator.addSource(f3) { t3: T3? -> 941 | val v1 = f1.value 942 | val v2 = f2.value 943 | val v3 = t3 944 | val v4 = f4.value 945 | val v5 = f5.value 946 | val v6 = f6.value 947 | val v7 = f7.value 948 | val v8 = f8.value 949 | val v9 = f9.value 950 | val v10 = f10.value 951 | val v11 = f11.value 952 | 953 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 954 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 955 | } 956 | } 957 | 958 | mediator.addSource(f4) { t4: T4? -> 959 | val v1 = f1.value 960 | val v2 = f2.value 961 | val v3 = f3.value 962 | val v4 = t4 963 | val v5 = f5.value 964 | val v6 = f6.value 965 | val v7 = f7.value 966 | val v8 = f8.value 967 | val v9 = f9.value 968 | val v10 = f10.value 969 | val v11 = f11.value 970 | 971 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 972 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 973 | } 974 | } 975 | 976 | mediator.addSource(f5) { t5: T5? -> 977 | val v1 = f1.value 978 | val v2 = f2.value 979 | val v3 = f3.value 980 | val v4 = f4.value 981 | val v5 = t5 982 | val v6 = f6.value 983 | val v7 = f7.value 984 | val v8 = f8.value 985 | val v9 = f9.value 986 | val v10 = f10.value 987 | val v11 = f11.value 988 | 989 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 990 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 991 | } 992 | } 993 | 994 | mediator.addSource(f6) { t6: T6? -> 995 | val v1 = f1.value 996 | val v2 = f2.value 997 | val v3 = f3.value 998 | val v4 = f4.value 999 | val v5 = f5.value 1000 | val v6 = t6 1001 | val v7 = f7.value 1002 | val v8 = f8.value 1003 | val v9 = f9.value 1004 | val v10 = f10.value 1005 | val v11 = f11.value 1006 | 1007 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1008 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1009 | } 1010 | } 1011 | 1012 | mediator.addSource(f7) { t7: T7? -> 1013 | val v1 = f1.value 1014 | val v2 = f2.value 1015 | val v3 = f3.value 1016 | val v4 = f4.value 1017 | val v5 = f5.value 1018 | val v6 = f6.value 1019 | val v7 = t7 1020 | val v8 = f8.value 1021 | val v9 = f9.value 1022 | val v10 = f10.value 1023 | val v11 = f11.value 1024 | 1025 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1026 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1027 | } 1028 | } 1029 | 1030 | mediator.addSource(f8) { t8: T8? -> 1031 | val v1 = f1.value 1032 | val v2 = f2.value 1033 | val v3 = f3.value 1034 | val v4 = f4.value 1035 | val v5 = f5.value 1036 | val v6 = f6.value 1037 | val v7 = f7.value 1038 | val v8 = t8 1039 | val v9 = f9.value 1040 | val v10 = f10.value 1041 | val v11 = f11.value 1042 | 1043 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1044 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1045 | } 1046 | } 1047 | 1048 | mediator.addSource(f9) { t9: T9? -> 1049 | val v1 = f1.value 1050 | val v2 = f2.value 1051 | val v3 = f3.value 1052 | val v4 = f4.value 1053 | val v5 = f5.value 1054 | val v6 = f6.value 1055 | val v7 = f7.value 1056 | val v8 = f8.value 1057 | val v9 = t9 1058 | val v10 = f10.value 1059 | val v11 = f11.value 1060 | 1061 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1062 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1063 | } 1064 | } 1065 | 1066 | mediator.addSource(f10) { t10: T10? -> 1067 | val v1 = f1.value 1068 | val v2 = f2.value 1069 | val v3 = f3.value 1070 | val v4 = f4.value 1071 | val v5 = f5.value 1072 | val v6 = f6.value 1073 | val v7 = f7.value 1074 | val v8 = f8.value 1075 | val v9 = f9.value 1076 | val v10 = t10 1077 | val v11 = f11.value 1078 | 1079 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1080 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1081 | } 1082 | } 1083 | 1084 | mediator.addSource(f11) { t11: T11? -> 1085 | val v1 = f1.value 1086 | val v2 = f2.value 1087 | val v3 = f3.value 1088 | val v4 = f4.value 1089 | val v5 = f5.value 1090 | val v6 = f6.value 1091 | val v7 = f7.value 1092 | val v8 = f8.value 1093 | val v9 = f9.value 1094 | val v10 = f10.value 1095 | val v11 = t11 1096 | 1097 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null) { 1098 | mediator.setValueIfNotEqual(Tuple11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)) 1099 | } 1100 | } 1101 | } 1102 | 1103 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 1104 | val v1 = f1.value 1105 | val v2 = f2.value 1106 | val v3 = f3.value 1107 | val v4 = f4.value 1108 | val v5 = f5.value 1109 | val v6 = f6.value 1110 | val v7 = f7.value 1111 | val v8 = f8.value 1112 | val v9 = f9.value 1113 | val v10 = f10.value 1114 | val v11 = f11.value 1115 | val v12 = f12.value 1116 | 1117 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1118 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1119 | } 1120 | 1121 | mediator.addSource(f1) { t1: T1? -> 1122 | val v1 = t1 1123 | val v2 = f2.value 1124 | val v3 = f3.value 1125 | val v4 = f4.value 1126 | val v5 = f5.value 1127 | val v6 = f6.value 1128 | val v7 = f7.value 1129 | val v8 = f8.value 1130 | val v9 = f9.value 1131 | val v10 = f10.value 1132 | val v11 = f11.value 1133 | val v12 = f12.value 1134 | 1135 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1136 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1137 | } 1138 | } 1139 | 1140 | mediator.addSource(f2) { t2: T2? -> 1141 | val v1 = f1.value 1142 | val v2 = t2 1143 | val v3 = f3.value 1144 | val v4 = f4.value 1145 | val v5 = f5.value 1146 | val v6 = f6.value 1147 | val v7 = f7.value 1148 | val v8 = f8.value 1149 | val v9 = f9.value 1150 | val v10 = f10.value 1151 | val v11 = f11.value 1152 | val v12 = f12.value 1153 | 1154 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1155 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1156 | } 1157 | } 1158 | 1159 | mediator.addSource(f3) { t3: T3? -> 1160 | val v1 = f1.value 1161 | val v2 = f2.value 1162 | val v3 = t3 1163 | val v4 = f4.value 1164 | val v5 = f5.value 1165 | val v6 = f6.value 1166 | val v7 = f7.value 1167 | val v8 = f8.value 1168 | val v9 = f9.value 1169 | val v10 = f10.value 1170 | val v11 = f11.value 1171 | val v12 = f12.value 1172 | 1173 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1174 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1175 | } 1176 | } 1177 | 1178 | mediator.addSource(f4) { t4: T4? -> 1179 | val v1 = f1.value 1180 | val v2 = f2.value 1181 | val v3 = f3.value 1182 | val v4 = t4 1183 | val v5 = f5.value 1184 | val v6 = f6.value 1185 | val v7 = f7.value 1186 | val v8 = f8.value 1187 | val v9 = f9.value 1188 | val v10 = f10.value 1189 | val v11 = f11.value 1190 | val v12 = f12.value 1191 | 1192 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1193 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1194 | } 1195 | } 1196 | 1197 | mediator.addSource(f5) { t5: T5? -> 1198 | val v1 = f1.value 1199 | val v2 = f2.value 1200 | val v3 = f3.value 1201 | val v4 = f4.value 1202 | val v5 = t5 1203 | val v6 = f6.value 1204 | val v7 = f7.value 1205 | val v8 = f8.value 1206 | val v9 = f9.value 1207 | val v10 = f10.value 1208 | val v11 = f11.value 1209 | val v12 = f12.value 1210 | 1211 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1212 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1213 | } 1214 | } 1215 | 1216 | mediator.addSource(f6) { t6: T6? -> 1217 | val v1 = f1.value 1218 | val v2 = f2.value 1219 | val v3 = f3.value 1220 | val v4 = f4.value 1221 | val v5 = f5.value 1222 | val v6 = t6 1223 | val v7 = f7.value 1224 | val v8 = f8.value 1225 | val v9 = f9.value 1226 | val v10 = f10.value 1227 | val v11 = f11.value 1228 | val v12 = f12.value 1229 | 1230 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1231 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1232 | } 1233 | } 1234 | 1235 | mediator.addSource(f7) { t7: T7? -> 1236 | val v1 = f1.value 1237 | val v2 = f2.value 1238 | val v3 = f3.value 1239 | val v4 = f4.value 1240 | val v5 = f5.value 1241 | val v6 = f6.value 1242 | val v7 = t7 1243 | val v8 = f8.value 1244 | val v9 = f9.value 1245 | val v10 = f10.value 1246 | val v11 = f11.value 1247 | val v12 = f12.value 1248 | 1249 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1250 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1251 | } 1252 | } 1253 | 1254 | mediator.addSource(f8) { t8: T8? -> 1255 | val v1 = f1.value 1256 | val v2 = f2.value 1257 | val v3 = f3.value 1258 | val v4 = f4.value 1259 | val v5 = f5.value 1260 | val v6 = f6.value 1261 | val v7 = f7.value 1262 | val v8 = t8 1263 | val v9 = f9.value 1264 | val v10 = f10.value 1265 | val v11 = f11.value 1266 | val v12 = f12.value 1267 | 1268 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1269 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1270 | } 1271 | } 1272 | 1273 | mediator.addSource(f9) { t9: T9? -> 1274 | val v1 = f1.value 1275 | val v2 = f2.value 1276 | val v3 = f3.value 1277 | val v4 = f4.value 1278 | val v5 = f5.value 1279 | val v6 = f6.value 1280 | val v7 = f7.value 1281 | val v8 = f8.value 1282 | val v9 = t9 1283 | val v10 = f10.value 1284 | val v11 = f11.value 1285 | val v12 = f12.value 1286 | 1287 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1288 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1289 | } 1290 | } 1291 | 1292 | mediator.addSource(f10) { t10: T10? -> 1293 | val v1 = f1.value 1294 | val v2 = f2.value 1295 | val v3 = f3.value 1296 | val v4 = f4.value 1297 | val v5 = f5.value 1298 | val v6 = f6.value 1299 | val v7 = f7.value 1300 | val v8 = f8.value 1301 | val v9 = f9.value 1302 | val v10 = t10 1303 | val v11 = f11.value 1304 | val v12 = f12.value 1305 | 1306 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1307 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1308 | } 1309 | } 1310 | 1311 | mediator.addSource(f11) { t11: T11? -> 1312 | val v1 = f1.value 1313 | val v2 = f2.value 1314 | val v3 = f3.value 1315 | val v4 = f4.value 1316 | val v5 = f5.value 1317 | val v6 = f6.value 1318 | val v7 = f7.value 1319 | val v8 = f8.value 1320 | val v9 = f9.value 1321 | val v10 = f10.value 1322 | val v11 = t11 1323 | val v12 = f12.value 1324 | 1325 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1326 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1327 | } 1328 | } 1329 | 1330 | mediator.addSource(f12) { t12: T12? -> 1331 | val v1 = f1.value 1332 | val v2 = f2.value 1333 | val v3 = f3.value 1334 | val v4 = f4.value 1335 | val v5 = f5.value 1336 | val v6 = f6.value 1337 | val v7 = f7.value 1338 | val v8 = f8.value 1339 | val v9 = f9.value 1340 | val v10 = f10.value 1341 | val v11 = f11.value 1342 | val v12 = t12 1343 | 1344 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null) { 1345 | mediator.setValueIfNotEqual(Tuple12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)) 1346 | } 1347 | } 1348 | } 1349 | 1350 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 1351 | val v1 = f1.value 1352 | val v2 = f2.value 1353 | val v3 = f3.value 1354 | val v4 = f4.value 1355 | val v5 = f5.value 1356 | val v6 = f6.value 1357 | val v7 = f7.value 1358 | val v8 = f8.value 1359 | val v9 = f9.value 1360 | val v10 = f10.value 1361 | val v11 = f11.value 1362 | val v12 = f12.value 1363 | val v13 = f13.value 1364 | 1365 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1366 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1367 | } 1368 | 1369 | mediator.addSource(f1) { t1: T1? -> 1370 | val v1 = t1 1371 | val v2 = f2.value 1372 | val v3 = f3.value 1373 | val v4 = f4.value 1374 | val v5 = f5.value 1375 | val v6 = f6.value 1376 | val v7 = f7.value 1377 | val v8 = f8.value 1378 | val v9 = f9.value 1379 | val v10 = f10.value 1380 | val v11 = f11.value 1381 | val v12 = f12.value 1382 | val v13 = f13.value 1383 | 1384 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1385 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1386 | } 1387 | } 1388 | 1389 | mediator.addSource(f2) { t2: T2? -> 1390 | val v1 = f1.value 1391 | val v2 = t2 1392 | val v3 = f3.value 1393 | val v4 = f4.value 1394 | val v5 = f5.value 1395 | val v6 = f6.value 1396 | val v7 = f7.value 1397 | val v8 = f8.value 1398 | val v9 = f9.value 1399 | val v10 = f10.value 1400 | val v11 = f11.value 1401 | val v12 = f12.value 1402 | val v13 = f13.value 1403 | 1404 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1405 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1406 | } 1407 | } 1408 | 1409 | mediator.addSource(f3) { t3: T3? -> 1410 | val v1 = f1.value 1411 | val v2 = f2.value 1412 | val v3 = t3 1413 | val v4 = f4.value 1414 | val v5 = f5.value 1415 | val v6 = f6.value 1416 | val v7 = f7.value 1417 | val v8 = f8.value 1418 | val v9 = f9.value 1419 | val v10 = f10.value 1420 | val v11 = f11.value 1421 | val v12 = f12.value 1422 | val v13 = f13.value 1423 | 1424 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1425 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1426 | } 1427 | } 1428 | 1429 | mediator.addSource(f4) { t4: T4? -> 1430 | val v1 = f1.value 1431 | val v2 = f2.value 1432 | val v3 = f3.value 1433 | val v4 = t4 1434 | val v5 = f5.value 1435 | val v6 = f6.value 1436 | val v7 = f7.value 1437 | val v8 = f8.value 1438 | val v9 = f9.value 1439 | val v10 = f10.value 1440 | val v11 = f11.value 1441 | val v12 = f12.value 1442 | val v13 = f13.value 1443 | 1444 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1445 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1446 | } 1447 | } 1448 | 1449 | mediator.addSource(f5) { t5: T5? -> 1450 | val v1 = f1.value 1451 | val v2 = f2.value 1452 | val v3 = f3.value 1453 | val v4 = f4.value 1454 | val v5 = t5 1455 | val v6 = f6.value 1456 | val v7 = f7.value 1457 | val v8 = f8.value 1458 | val v9 = f9.value 1459 | val v10 = f10.value 1460 | val v11 = f11.value 1461 | val v12 = f12.value 1462 | val v13 = f13.value 1463 | 1464 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1465 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1466 | } 1467 | } 1468 | 1469 | mediator.addSource(f6) { t6: T6? -> 1470 | val v1 = f1.value 1471 | val v2 = f2.value 1472 | val v3 = f3.value 1473 | val v4 = f4.value 1474 | val v5 = f5.value 1475 | val v6 = t6 1476 | val v7 = f7.value 1477 | val v8 = f8.value 1478 | val v9 = f9.value 1479 | val v10 = f10.value 1480 | val v11 = f11.value 1481 | val v12 = f12.value 1482 | val v13 = f13.value 1483 | 1484 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1485 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1486 | } 1487 | } 1488 | 1489 | mediator.addSource(f7) { t7: T7? -> 1490 | val v1 = f1.value 1491 | val v2 = f2.value 1492 | val v3 = f3.value 1493 | val v4 = f4.value 1494 | val v5 = f5.value 1495 | val v6 = f6.value 1496 | val v7 = t7 1497 | val v8 = f8.value 1498 | val v9 = f9.value 1499 | val v10 = f10.value 1500 | val v11 = f11.value 1501 | val v12 = f12.value 1502 | val v13 = f13.value 1503 | 1504 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1505 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1506 | } 1507 | } 1508 | 1509 | mediator.addSource(f8) { t8: T8? -> 1510 | val v1 = f1.value 1511 | val v2 = f2.value 1512 | val v3 = f3.value 1513 | val v4 = f4.value 1514 | val v5 = f5.value 1515 | val v6 = f6.value 1516 | val v7 = f7.value 1517 | val v8 = t8 1518 | val v9 = f9.value 1519 | val v10 = f10.value 1520 | val v11 = f11.value 1521 | val v12 = f12.value 1522 | val v13 = f13.value 1523 | 1524 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1525 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1526 | } 1527 | } 1528 | 1529 | mediator.addSource(f9) { t9: T9? -> 1530 | val v1 = f1.value 1531 | val v2 = f2.value 1532 | val v3 = f3.value 1533 | val v4 = f4.value 1534 | val v5 = f5.value 1535 | val v6 = f6.value 1536 | val v7 = f7.value 1537 | val v8 = f8.value 1538 | val v9 = t9 1539 | val v10 = f10.value 1540 | val v11 = f11.value 1541 | val v12 = f12.value 1542 | val v13 = f13.value 1543 | 1544 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1545 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1546 | } 1547 | } 1548 | 1549 | mediator.addSource(f10) { t10: T10? -> 1550 | val v1 = f1.value 1551 | val v2 = f2.value 1552 | val v3 = f3.value 1553 | val v4 = f4.value 1554 | val v5 = f5.value 1555 | val v6 = f6.value 1556 | val v7 = f7.value 1557 | val v8 = f8.value 1558 | val v9 = f9.value 1559 | val v10 = t10 1560 | val v11 = f11.value 1561 | val v12 = f12.value 1562 | val v13 = f13.value 1563 | 1564 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1565 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1566 | } 1567 | } 1568 | 1569 | mediator.addSource(f11) { t11: T11? -> 1570 | val v1 = f1.value 1571 | val v2 = f2.value 1572 | val v3 = f3.value 1573 | val v4 = f4.value 1574 | val v5 = f5.value 1575 | val v6 = f6.value 1576 | val v7 = f7.value 1577 | val v8 = f8.value 1578 | val v9 = f9.value 1579 | val v10 = f10.value 1580 | val v11 = t11 1581 | val v12 = f12.value 1582 | val v13 = f13.value 1583 | 1584 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1585 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1586 | } 1587 | } 1588 | 1589 | mediator.addSource(f12) { t12: T12? -> 1590 | val v1 = f1.value 1591 | val v2 = f2.value 1592 | val v3 = f3.value 1593 | val v4 = f4.value 1594 | val v5 = f5.value 1595 | val v6 = f6.value 1596 | val v7 = f7.value 1597 | val v8 = f8.value 1598 | val v9 = f9.value 1599 | val v10 = f10.value 1600 | val v11 = f11.value 1601 | val v12 = t12 1602 | val v13 = f13.value 1603 | 1604 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1605 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1606 | } 1607 | } 1608 | 1609 | mediator.addSource(f13) { t13: T13? -> 1610 | val v1 = f1.value 1611 | val v2 = f2.value 1612 | val v3 = f3.value 1613 | val v4 = f4.value 1614 | val v5 = f5.value 1615 | val v6 = f6.value 1616 | val v7 = f7.value 1617 | val v8 = f8.value 1618 | val v9 = f9.value 1619 | val v10 = f10.value 1620 | val v11 = f11.value 1621 | val v12 = f12.value 1622 | val v13 = t13 1623 | 1624 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null) { 1625 | mediator.setValueIfNotEqual(Tuple13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)) 1626 | } 1627 | } 1628 | } 1629 | 1630 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 1631 | val v1 = f1.value 1632 | val v2 = f2.value 1633 | val v3 = f3.value 1634 | val v4 = f4.value 1635 | val v5 = f5.value 1636 | val v6 = f6.value 1637 | val v7 = f7.value 1638 | val v8 = f8.value 1639 | val v9 = f9.value 1640 | val v10 = f10.value 1641 | val v11 = f11.value 1642 | val v12 = f12.value 1643 | val v13 = f13.value 1644 | val v14 = f14.value 1645 | 1646 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1647 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1648 | } 1649 | 1650 | mediator.addSource(f1) { t1: T1? -> 1651 | val v1 = t1 1652 | val v2 = f2.value 1653 | val v3 = f3.value 1654 | val v4 = f4.value 1655 | val v5 = f5.value 1656 | val v6 = f6.value 1657 | val v7 = f7.value 1658 | val v8 = f8.value 1659 | val v9 = f9.value 1660 | val v10 = f10.value 1661 | val v11 = f11.value 1662 | val v12 = f12.value 1663 | val v13 = f13.value 1664 | val v14 = f14.value 1665 | 1666 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1667 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1668 | } 1669 | } 1670 | 1671 | mediator.addSource(f2) { t2: T2? -> 1672 | val v1 = f1.value 1673 | val v2 = t2 1674 | val v3 = f3.value 1675 | val v4 = f4.value 1676 | val v5 = f5.value 1677 | val v6 = f6.value 1678 | val v7 = f7.value 1679 | val v8 = f8.value 1680 | val v9 = f9.value 1681 | val v10 = f10.value 1682 | val v11 = f11.value 1683 | val v12 = f12.value 1684 | val v13 = f13.value 1685 | val v14 = f14.value 1686 | 1687 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1688 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1689 | } 1690 | } 1691 | 1692 | mediator.addSource(f3) { t3: T3? -> 1693 | val v1 = f1.value 1694 | val v2 = f2.value 1695 | val v3 = t3 1696 | val v4 = f4.value 1697 | val v5 = f5.value 1698 | val v6 = f6.value 1699 | val v7 = f7.value 1700 | val v8 = f8.value 1701 | val v9 = f9.value 1702 | val v10 = f10.value 1703 | val v11 = f11.value 1704 | val v12 = f12.value 1705 | val v13 = f13.value 1706 | val v14 = f14.value 1707 | 1708 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1709 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1710 | } 1711 | } 1712 | 1713 | mediator.addSource(f4) { t4: T4? -> 1714 | val v1 = f1.value 1715 | val v2 = f2.value 1716 | val v3 = f3.value 1717 | val v4 = t4 1718 | val v5 = f5.value 1719 | val v6 = f6.value 1720 | val v7 = f7.value 1721 | val v8 = f8.value 1722 | val v9 = f9.value 1723 | val v10 = f10.value 1724 | val v11 = f11.value 1725 | val v12 = f12.value 1726 | val v13 = f13.value 1727 | val v14 = f14.value 1728 | 1729 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1730 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1731 | } 1732 | } 1733 | 1734 | mediator.addSource(f5) { t5: T5? -> 1735 | val v1 = f1.value 1736 | val v2 = f2.value 1737 | val v3 = f3.value 1738 | val v4 = f4.value 1739 | val v5 = t5 1740 | val v6 = f6.value 1741 | val v7 = f7.value 1742 | val v8 = f8.value 1743 | val v9 = f9.value 1744 | val v10 = f10.value 1745 | val v11 = f11.value 1746 | val v12 = f12.value 1747 | val v13 = f13.value 1748 | val v14 = f14.value 1749 | 1750 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1751 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1752 | } 1753 | } 1754 | 1755 | mediator.addSource(f6) { t6: T6? -> 1756 | val v1 = f1.value 1757 | val v2 = f2.value 1758 | val v3 = f3.value 1759 | val v4 = f4.value 1760 | val v5 = f5.value 1761 | val v6 = t6 1762 | val v7 = f7.value 1763 | val v8 = f8.value 1764 | val v9 = f9.value 1765 | val v10 = f10.value 1766 | val v11 = f11.value 1767 | val v12 = f12.value 1768 | val v13 = f13.value 1769 | val v14 = f14.value 1770 | 1771 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1772 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1773 | } 1774 | } 1775 | 1776 | mediator.addSource(f7) { t7: T7? -> 1777 | val v1 = f1.value 1778 | val v2 = f2.value 1779 | val v3 = f3.value 1780 | val v4 = f4.value 1781 | val v5 = f5.value 1782 | val v6 = f6.value 1783 | val v7 = t7 1784 | val v8 = f8.value 1785 | val v9 = f9.value 1786 | val v10 = f10.value 1787 | val v11 = f11.value 1788 | val v12 = f12.value 1789 | val v13 = f13.value 1790 | val v14 = f14.value 1791 | 1792 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1793 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1794 | } 1795 | } 1796 | 1797 | mediator.addSource(f8) { t8: T8? -> 1798 | val v1 = f1.value 1799 | val v2 = f2.value 1800 | val v3 = f3.value 1801 | val v4 = f4.value 1802 | val v5 = f5.value 1803 | val v6 = f6.value 1804 | val v7 = f7.value 1805 | val v8 = t8 1806 | val v9 = f9.value 1807 | val v10 = f10.value 1808 | val v11 = f11.value 1809 | val v12 = f12.value 1810 | val v13 = f13.value 1811 | val v14 = f14.value 1812 | 1813 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1814 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1815 | } 1816 | } 1817 | 1818 | mediator.addSource(f9) { t9: T9? -> 1819 | val v1 = f1.value 1820 | val v2 = f2.value 1821 | val v3 = f3.value 1822 | val v4 = f4.value 1823 | val v5 = f5.value 1824 | val v6 = f6.value 1825 | val v7 = f7.value 1826 | val v8 = f8.value 1827 | val v9 = t9 1828 | val v10 = f10.value 1829 | val v11 = f11.value 1830 | val v12 = f12.value 1831 | val v13 = f13.value 1832 | val v14 = f14.value 1833 | 1834 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1835 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1836 | } 1837 | } 1838 | 1839 | mediator.addSource(f10) { t10: T10? -> 1840 | val v1 = f1.value 1841 | val v2 = f2.value 1842 | val v3 = f3.value 1843 | val v4 = f4.value 1844 | val v5 = f5.value 1845 | val v6 = f6.value 1846 | val v7 = f7.value 1847 | val v8 = f8.value 1848 | val v9 = f9.value 1849 | val v10 = t10 1850 | val v11 = f11.value 1851 | val v12 = f12.value 1852 | val v13 = f13.value 1853 | val v14 = f14.value 1854 | 1855 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1856 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1857 | } 1858 | } 1859 | 1860 | mediator.addSource(f11) { t11: T11? -> 1861 | val v1 = f1.value 1862 | val v2 = f2.value 1863 | val v3 = f3.value 1864 | val v4 = f4.value 1865 | val v5 = f5.value 1866 | val v6 = f6.value 1867 | val v7 = f7.value 1868 | val v8 = f8.value 1869 | val v9 = f9.value 1870 | val v10 = f10.value 1871 | val v11 = t11 1872 | val v12 = f12.value 1873 | val v13 = f13.value 1874 | val v14 = f14.value 1875 | 1876 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1877 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1878 | } 1879 | } 1880 | 1881 | mediator.addSource(f12) { t12: T12? -> 1882 | val v1 = f1.value 1883 | val v2 = f2.value 1884 | val v3 = f3.value 1885 | val v4 = f4.value 1886 | val v5 = f5.value 1887 | val v6 = f6.value 1888 | val v7 = f7.value 1889 | val v8 = f8.value 1890 | val v9 = f9.value 1891 | val v10 = f10.value 1892 | val v11 = f11.value 1893 | val v12 = t12 1894 | val v13 = f13.value 1895 | val v14 = f14.value 1896 | 1897 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1898 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1899 | } 1900 | } 1901 | 1902 | mediator.addSource(f13) { t13: T13? -> 1903 | val v1 = f1.value 1904 | val v2 = f2.value 1905 | val v3 = f3.value 1906 | val v4 = f4.value 1907 | val v5 = f5.value 1908 | val v6 = f6.value 1909 | val v7 = f7.value 1910 | val v8 = f8.value 1911 | val v9 = f9.value 1912 | val v10 = f10.value 1913 | val v11 = f11.value 1914 | val v12 = f12.value 1915 | val v13 = t13 1916 | val v14 = f14.value 1917 | 1918 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1919 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1920 | } 1921 | } 1922 | 1923 | mediator.addSource(f14) { t14: T14? -> 1924 | val v1 = f1.value 1925 | val v2 = f2.value 1926 | val v3 = f3.value 1927 | val v4 = f4.value 1928 | val v5 = f5.value 1929 | val v6 = f6.value 1930 | val v7 = f7.value 1931 | val v8 = f8.value 1932 | val v9 = f9.value 1933 | val v10 = f10.value 1934 | val v11 = f11.value 1935 | val v12 = f12.value 1936 | val v13 = f13.value 1937 | val v14 = t14 1938 | 1939 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null) { 1940 | mediator.setValueIfNotEqual(Tuple14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)) 1941 | } 1942 | } 1943 | } 1944 | 1945 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 1946 | val v1 = f1.value 1947 | val v2 = f2.value 1948 | val v3 = f3.value 1949 | val v4 = f4.value 1950 | val v5 = f5.value 1951 | val v6 = f6.value 1952 | val v7 = f7.value 1953 | val v8 = f8.value 1954 | val v9 = f9.value 1955 | val v10 = f10.value 1956 | val v11 = f11.value 1957 | val v12 = f12.value 1958 | val v13 = f13.value 1959 | val v14 = f14.value 1960 | val v15 = f15.value 1961 | 1962 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 1963 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 1964 | } 1965 | 1966 | mediator.addSource(f1) { t1: T1? -> 1967 | val v1 = t1 1968 | val v2 = f2.value 1969 | val v3 = f3.value 1970 | val v4 = f4.value 1971 | val v5 = f5.value 1972 | val v6 = f6.value 1973 | val v7 = f7.value 1974 | val v8 = f8.value 1975 | val v9 = f9.value 1976 | val v10 = f10.value 1977 | val v11 = f11.value 1978 | val v12 = f12.value 1979 | val v13 = f13.value 1980 | val v14 = f14.value 1981 | val v15 = f15.value 1982 | 1983 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 1984 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 1985 | } 1986 | } 1987 | 1988 | mediator.addSource(f2) { t2: T2? -> 1989 | val v1 = f1.value 1990 | val v2 = t2 1991 | val v3 = f3.value 1992 | val v4 = f4.value 1993 | val v5 = f5.value 1994 | val v6 = f6.value 1995 | val v7 = f7.value 1996 | val v8 = f8.value 1997 | val v9 = f9.value 1998 | val v10 = f10.value 1999 | val v11 = f11.value 2000 | val v12 = f12.value 2001 | val v13 = f13.value 2002 | val v14 = f14.value 2003 | val v15 = f15.value 2004 | 2005 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2006 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2007 | } 2008 | } 2009 | 2010 | mediator.addSource(f3) { t3: T3? -> 2011 | val v1 = f1.value 2012 | val v2 = f2.value 2013 | val v3 = t3 2014 | val v4 = f4.value 2015 | val v5 = f5.value 2016 | val v6 = f6.value 2017 | val v7 = f7.value 2018 | val v8 = f8.value 2019 | val v9 = f9.value 2020 | val v10 = f10.value 2021 | val v11 = f11.value 2022 | val v12 = f12.value 2023 | val v13 = f13.value 2024 | val v14 = f14.value 2025 | val v15 = f15.value 2026 | 2027 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2028 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2029 | } 2030 | } 2031 | 2032 | mediator.addSource(f4) { t4: T4? -> 2033 | val v1 = f1.value 2034 | val v2 = f2.value 2035 | val v3 = f3.value 2036 | val v4 = t4 2037 | val v5 = f5.value 2038 | val v6 = f6.value 2039 | val v7 = f7.value 2040 | val v8 = f8.value 2041 | val v9 = f9.value 2042 | val v10 = f10.value 2043 | val v11 = f11.value 2044 | val v12 = f12.value 2045 | val v13 = f13.value 2046 | val v14 = f14.value 2047 | val v15 = f15.value 2048 | 2049 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2050 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2051 | } 2052 | } 2053 | 2054 | mediator.addSource(f5) { t5: T5? -> 2055 | val v1 = f1.value 2056 | val v2 = f2.value 2057 | val v3 = f3.value 2058 | val v4 = f4.value 2059 | val v5 = t5 2060 | val v6 = f6.value 2061 | val v7 = f7.value 2062 | val v8 = f8.value 2063 | val v9 = f9.value 2064 | val v10 = f10.value 2065 | val v11 = f11.value 2066 | val v12 = f12.value 2067 | val v13 = f13.value 2068 | val v14 = f14.value 2069 | val v15 = f15.value 2070 | 2071 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2072 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2073 | } 2074 | } 2075 | 2076 | mediator.addSource(f6) { t6: T6? -> 2077 | val v1 = f1.value 2078 | val v2 = f2.value 2079 | val v3 = f3.value 2080 | val v4 = f4.value 2081 | val v5 = f5.value 2082 | val v6 = t6 2083 | val v7 = f7.value 2084 | val v8 = f8.value 2085 | val v9 = f9.value 2086 | val v10 = f10.value 2087 | val v11 = f11.value 2088 | val v12 = f12.value 2089 | val v13 = f13.value 2090 | val v14 = f14.value 2091 | val v15 = f15.value 2092 | 2093 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2094 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2095 | } 2096 | } 2097 | 2098 | mediator.addSource(f7) { t7: T7? -> 2099 | val v1 = f1.value 2100 | val v2 = f2.value 2101 | val v3 = f3.value 2102 | val v4 = f4.value 2103 | val v5 = f5.value 2104 | val v6 = f6.value 2105 | val v7 = t7 2106 | val v8 = f8.value 2107 | val v9 = f9.value 2108 | val v10 = f10.value 2109 | val v11 = f11.value 2110 | val v12 = f12.value 2111 | val v13 = f13.value 2112 | val v14 = f14.value 2113 | val v15 = f15.value 2114 | 2115 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2116 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2117 | } 2118 | } 2119 | 2120 | mediator.addSource(f8) { t8: T8? -> 2121 | val v1 = f1.value 2122 | val v2 = f2.value 2123 | val v3 = f3.value 2124 | val v4 = f4.value 2125 | val v5 = f5.value 2126 | val v6 = f6.value 2127 | val v7 = f7.value 2128 | val v8 = t8 2129 | val v9 = f9.value 2130 | val v10 = f10.value 2131 | val v11 = f11.value 2132 | val v12 = f12.value 2133 | val v13 = f13.value 2134 | val v14 = f14.value 2135 | val v15 = f15.value 2136 | 2137 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2138 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2139 | } 2140 | } 2141 | 2142 | mediator.addSource(f9) { t9: T9? -> 2143 | val v1 = f1.value 2144 | val v2 = f2.value 2145 | val v3 = f3.value 2146 | val v4 = f4.value 2147 | val v5 = f5.value 2148 | val v6 = f6.value 2149 | val v7 = f7.value 2150 | val v8 = f8.value 2151 | val v9 = t9 2152 | val v10 = f10.value 2153 | val v11 = f11.value 2154 | val v12 = f12.value 2155 | val v13 = f13.value 2156 | val v14 = f14.value 2157 | val v15 = f15.value 2158 | 2159 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2160 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2161 | } 2162 | } 2163 | 2164 | mediator.addSource(f10) { t10: T10? -> 2165 | val v1 = f1.value 2166 | val v2 = f2.value 2167 | val v3 = f3.value 2168 | val v4 = f4.value 2169 | val v5 = f5.value 2170 | val v6 = f6.value 2171 | val v7 = f7.value 2172 | val v8 = f8.value 2173 | val v9 = f9.value 2174 | val v10 = t10 2175 | val v11 = f11.value 2176 | val v12 = f12.value 2177 | val v13 = f13.value 2178 | val v14 = f14.value 2179 | val v15 = f15.value 2180 | 2181 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2182 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2183 | } 2184 | } 2185 | 2186 | mediator.addSource(f11) { t11: T11? -> 2187 | val v1 = f1.value 2188 | val v2 = f2.value 2189 | val v3 = f3.value 2190 | val v4 = f4.value 2191 | val v5 = f5.value 2192 | val v6 = f6.value 2193 | val v7 = f7.value 2194 | val v8 = f8.value 2195 | val v9 = f9.value 2196 | val v10 = f10.value 2197 | val v11 = t11 2198 | val v12 = f12.value 2199 | val v13 = f13.value 2200 | val v14 = f14.value 2201 | val v15 = f15.value 2202 | 2203 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2204 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2205 | } 2206 | } 2207 | 2208 | mediator.addSource(f12) { t12: T12? -> 2209 | val v1 = f1.value 2210 | val v2 = f2.value 2211 | val v3 = f3.value 2212 | val v4 = f4.value 2213 | val v5 = f5.value 2214 | val v6 = f6.value 2215 | val v7 = f7.value 2216 | val v8 = f8.value 2217 | val v9 = f9.value 2218 | val v10 = f10.value 2219 | val v11 = f11.value 2220 | val v12 = t12 2221 | val v13 = f13.value 2222 | val v14 = f14.value 2223 | val v15 = f15.value 2224 | 2225 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2226 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2227 | } 2228 | } 2229 | 2230 | mediator.addSource(f13) { t13: T13? -> 2231 | val v1 = f1.value 2232 | val v2 = f2.value 2233 | val v3 = f3.value 2234 | val v4 = f4.value 2235 | val v5 = f5.value 2236 | val v6 = f6.value 2237 | val v7 = f7.value 2238 | val v8 = f8.value 2239 | val v9 = f9.value 2240 | val v10 = f10.value 2241 | val v11 = f11.value 2242 | val v12 = f12.value 2243 | val v13 = t13 2244 | val v14 = f14.value 2245 | val v15 = f15.value 2246 | 2247 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2248 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2249 | } 2250 | } 2251 | 2252 | mediator.addSource(f14) { t14: T14? -> 2253 | val v1 = f1.value 2254 | val v2 = f2.value 2255 | val v3 = f3.value 2256 | val v4 = f4.value 2257 | val v5 = f5.value 2258 | val v6 = f6.value 2259 | val v7 = f7.value 2260 | val v8 = f8.value 2261 | val v9 = f9.value 2262 | val v10 = f10.value 2263 | val v11 = f11.value 2264 | val v12 = f12.value 2265 | val v13 = f13.value 2266 | val v14 = t14 2267 | val v15 = f15.value 2268 | 2269 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2270 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2271 | } 2272 | } 2273 | 2274 | mediator.addSource(f15) { t15: T15? -> 2275 | val v1 = f1.value 2276 | val v2 = f2.value 2277 | val v3 = f3.value 2278 | val v4 = f4.value 2279 | val v5 = f5.value 2280 | val v6 = f6.value 2281 | val v7 = f7.value 2282 | val v8 = f8.value 2283 | val v9 = f9.value 2284 | val v10 = f10.value 2285 | val v11 = f11.value 2286 | val v12 = f12.value 2287 | val v13 = f13.value 2288 | val v14 = f14.value 2289 | val v15 = t15 2290 | 2291 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null) { 2292 | mediator.setValueIfNotEqual(Tuple15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) 2293 | } 2294 | } 2295 | } 2296 | 2297 | fun combineTupleSkipNull(f1: LiveData, f2: LiveData, f3: LiveData, f4: LiveData, f5: LiveData, f6: LiveData, f7: LiveData, f8: LiveData, f9: LiveData, f10: LiveData, f11: LiveData, f12: LiveData, f13: LiveData, f14: LiveData, f15: LiveData, f16: LiveData): LiveData?> = MediatorLiveData?>().also { mediator -> 2298 | val v1 = f1.value 2299 | val v2 = f2.value 2300 | val v3 = f3.value 2301 | val v4 = f4.value 2302 | val v5 = f5.value 2303 | val v6 = f6.value 2304 | val v7 = f7.value 2305 | val v8 = f8.value 2306 | val v9 = f9.value 2307 | val v10 = f10.value 2308 | val v11 = f11.value 2309 | val v12 = f12.value 2310 | val v13 = f13.value 2311 | val v14 = f14.value 2312 | val v15 = f15.value 2313 | val v16 = f16.value 2314 | 2315 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2316 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2317 | } 2318 | 2319 | mediator.addSource(f1) { t1: T1? -> 2320 | val v1 = t1 2321 | val v2 = f2.value 2322 | val v3 = f3.value 2323 | val v4 = f4.value 2324 | val v5 = f5.value 2325 | val v6 = f6.value 2326 | val v7 = f7.value 2327 | val v8 = f8.value 2328 | val v9 = f9.value 2329 | val v10 = f10.value 2330 | val v11 = f11.value 2331 | val v12 = f12.value 2332 | val v13 = f13.value 2333 | val v14 = f14.value 2334 | val v15 = f15.value 2335 | val v16 = f16.value 2336 | 2337 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2338 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2339 | } 2340 | } 2341 | 2342 | mediator.addSource(f2) { t2: T2? -> 2343 | val v1 = f1.value 2344 | val v2 = t2 2345 | val v3 = f3.value 2346 | val v4 = f4.value 2347 | val v5 = f5.value 2348 | val v6 = f6.value 2349 | val v7 = f7.value 2350 | val v8 = f8.value 2351 | val v9 = f9.value 2352 | val v10 = f10.value 2353 | val v11 = f11.value 2354 | val v12 = f12.value 2355 | val v13 = f13.value 2356 | val v14 = f14.value 2357 | val v15 = f15.value 2358 | val v16 = f16.value 2359 | 2360 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2361 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2362 | } 2363 | } 2364 | 2365 | mediator.addSource(f3) { t3: T3? -> 2366 | val v1 = f1.value 2367 | val v2 = f2.value 2368 | val v3 = t3 2369 | val v4 = f4.value 2370 | val v5 = f5.value 2371 | val v6 = f6.value 2372 | val v7 = f7.value 2373 | val v8 = f8.value 2374 | val v9 = f9.value 2375 | val v10 = f10.value 2376 | val v11 = f11.value 2377 | val v12 = f12.value 2378 | val v13 = f13.value 2379 | val v14 = f14.value 2380 | val v15 = f15.value 2381 | val v16 = f16.value 2382 | 2383 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2384 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2385 | } 2386 | } 2387 | 2388 | mediator.addSource(f4) { t4: T4? -> 2389 | val v1 = f1.value 2390 | val v2 = f2.value 2391 | val v3 = f3.value 2392 | val v4 = t4 2393 | val v5 = f5.value 2394 | val v6 = f6.value 2395 | val v7 = f7.value 2396 | val v8 = f8.value 2397 | val v9 = f9.value 2398 | val v10 = f10.value 2399 | val v11 = f11.value 2400 | val v12 = f12.value 2401 | val v13 = f13.value 2402 | val v14 = f14.value 2403 | val v15 = f15.value 2404 | val v16 = f16.value 2405 | 2406 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2407 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2408 | } 2409 | } 2410 | 2411 | mediator.addSource(f5) { t5: T5? -> 2412 | val v1 = f1.value 2413 | val v2 = f2.value 2414 | val v3 = f3.value 2415 | val v4 = f4.value 2416 | val v5 = t5 2417 | val v6 = f6.value 2418 | val v7 = f7.value 2419 | val v8 = f8.value 2420 | val v9 = f9.value 2421 | val v10 = f10.value 2422 | val v11 = f11.value 2423 | val v12 = f12.value 2424 | val v13 = f13.value 2425 | val v14 = f14.value 2426 | val v15 = f15.value 2427 | val v16 = f16.value 2428 | 2429 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2430 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2431 | } 2432 | } 2433 | 2434 | mediator.addSource(f6) { t6: T6? -> 2435 | val v1 = f1.value 2436 | val v2 = f2.value 2437 | val v3 = f3.value 2438 | val v4 = f4.value 2439 | val v5 = f5.value 2440 | val v6 = t6 2441 | val v7 = f7.value 2442 | val v8 = f8.value 2443 | val v9 = f9.value 2444 | val v10 = f10.value 2445 | val v11 = f11.value 2446 | val v12 = f12.value 2447 | val v13 = f13.value 2448 | val v14 = f14.value 2449 | val v15 = f15.value 2450 | val v16 = f16.value 2451 | 2452 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2453 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2454 | } 2455 | } 2456 | 2457 | mediator.addSource(f7) { t7: T7? -> 2458 | val v1 = f1.value 2459 | val v2 = f2.value 2460 | val v3 = f3.value 2461 | val v4 = f4.value 2462 | val v5 = f5.value 2463 | val v6 = f6.value 2464 | val v7 = t7 2465 | val v8 = f8.value 2466 | val v9 = f9.value 2467 | val v10 = f10.value 2468 | val v11 = f11.value 2469 | val v12 = f12.value 2470 | val v13 = f13.value 2471 | val v14 = f14.value 2472 | val v15 = f15.value 2473 | val v16 = f16.value 2474 | 2475 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2476 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2477 | } 2478 | } 2479 | 2480 | mediator.addSource(f8) { t8: T8? -> 2481 | val v1 = f1.value 2482 | val v2 = f2.value 2483 | val v3 = f3.value 2484 | val v4 = f4.value 2485 | val v5 = f5.value 2486 | val v6 = f6.value 2487 | val v7 = f7.value 2488 | val v8 = t8 2489 | val v9 = f9.value 2490 | val v10 = f10.value 2491 | val v11 = f11.value 2492 | val v12 = f12.value 2493 | val v13 = f13.value 2494 | val v14 = f14.value 2495 | val v15 = f15.value 2496 | val v16 = f16.value 2497 | 2498 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2499 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2500 | } 2501 | } 2502 | 2503 | mediator.addSource(f9) { t9: T9? -> 2504 | val v1 = f1.value 2505 | val v2 = f2.value 2506 | val v3 = f3.value 2507 | val v4 = f4.value 2508 | val v5 = f5.value 2509 | val v6 = f6.value 2510 | val v7 = f7.value 2511 | val v8 = f8.value 2512 | val v9 = t9 2513 | val v10 = f10.value 2514 | val v11 = f11.value 2515 | val v12 = f12.value 2516 | val v13 = f13.value 2517 | val v14 = f14.value 2518 | val v15 = f15.value 2519 | val v16 = f16.value 2520 | 2521 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2522 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2523 | } 2524 | } 2525 | 2526 | mediator.addSource(f10) { t10: T10? -> 2527 | val v1 = f1.value 2528 | val v2 = f2.value 2529 | val v3 = f3.value 2530 | val v4 = f4.value 2531 | val v5 = f5.value 2532 | val v6 = f6.value 2533 | val v7 = f7.value 2534 | val v8 = f8.value 2535 | val v9 = f9.value 2536 | val v10 = t10 2537 | val v11 = f11.value 2538 | val v12 = f12.value 2539 | val v13 = f13.value 2540 | val v14 = f14.value 2541 | val v15 = f15.value 2542 | val v16 = f16.value 2543 | 2544 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2545 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2546 | } 2547 | } 2548 | 2549 | mediator.addSource(f11) { t11: T11? -> 2550 | val v1 = f1.value 2551 | val v2 = f2.value 2552 | val v3 = f3.value 2553 | val v4 = f4.value 2554 | val v5 = f5.value 2555 | val v6 = f6.value 2556 | val v7 = f7.value 2557 | val v8 = f8.value 2558 | val v9 = f9.value 2559 | val v10 = f10.value 2560 | val v11 = t11 2561 | val v12 = f12.value 2562 | val v13 = f13.value 2563 | val v14 = f14.value 2564 | val v15 = f15.value 2565 | val v16 = f16.value 2566 | 2567 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2568 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2569 | } 2570 | } 2571 | 2572 | mediator.addSource(f12) { t12: T12? -> 2573 | val v1 = f1.value 2574 | val v2 = f2.value 2575 | val v3 = f3.value 2576 | val v4 = f4.value 2577 | val v5 = f5.value 2578 | val v6 = f6.value 2579 | val v7 = f7.value 2580 | val v8 = f8.value 2581 | val v9 = f9.value 2582 | val v10 = f10.value 2583 | val v11 = f11.value 2584 | val v12 = t12 2585 | val v13 = f13.value 2586 | val v14 = f14.value 2587 | val v15 = f15.value 2588 | val v16 = f16.value 2589 | 2590 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2591 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2592 | } 2593 | } 2594 | 2595 | mediator.addSource(f13) { t13: T13? -> 2596 | val v1 = f1.value 2597 | val v2 = f2.value 2598 | val v3 = f3.value 2599 | val v4 = f4.value 2600 | val v5 = f5.value 2601 | val v6 = f6.value 2602 | val v7 = f7.value 2603 | val v8 = f8.value 2604 | val v9 = f9.value 2605 | val v10 = f10.value 2606 | val v11 = f11.value 2607 | val v12 = f12.value 2608 | val v13 = t13 2609 | val v14 = f14.value 2610 | val v15 = f15.value 2611 | val v16 = f16.value 2612 | 2613 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2614 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2615 | } 2616 | } 2617 | 2618 | mediator.addSource(f14) { t14: T14? -> 2619 | val v1 = f1.value 2620 | val v2 = f2.value 2621 | val v3 = f3.value 2622 | val v4 = f4.value 2623 | val v5 = f5.value 2624 | val v6 = f6.value 2625 | val v7 = f7.value 2626 | val v8 = f8.value 2627 | val v9 = f9.value 2628 | val v10 = f10.value 2629 | val v11 = f11.value 2630 | val v12 = f12.value 2631 | val v13 = f13.value 2632 | val v14 = t14 2633 | val v15 = f15.value 2634 | val v16 = f16.value 2635 | 2636 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2637 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2638 | } 2639 | } 2640 | 2641 | mediator.addSource(f15) { t15: T15? -> 2642 | val v1 = f1.value 2643 | val v2 = f2.value 2644 | val v3 = f3.value 2645 | val v4 = f4.value 2646 | val v5 = f5.value 2647 | val v6 = f6.value 2648 | val v7 = f7.value 2649 | val v8 = f8.value 2650 | val v9 = f9.value 2651 | val v10 = f10.value 2652 | val v11 = f11.value 2653 | val v12 = f12.value 2654 | val v13 = f13.value 2655 | val v14 = f14.value 2656 | val v15 = t15 2657 | val v16 = f16.value 2658 | 2659 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2660 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2661 | } 2662 | } 2663 | 2664 | mediator.addSource(f16) { t16: T16? -> 2665 | val v1 = f1.value 2666 | val v2 = f2.value 2667 | val v3 = f3.value 2668 | val v4 = f4.value 2669 | val v5 = f5.value 2670 | val v6 = f6.value 2671 | val v7 = f7.value 2672 | val v8 = f8.value 2673 | val v9 = f9.value 2674 | val v10 = f10.value 2675 | val v11 = f11.value 2676 | val v12 = f12.value 2677 | val v13 = f13.value 2678 | val v14 = f14.value 2679 | val v15 = f15.value 2680 | val v16 = t16 2681 | 2682 | if (v1 != null && v2 != null && v3 != null && v4 != null && v5 != null && v6 != null && v7 != null && v8 != null && v9 != null && v10 != null && v11 != null && v12 != null && v13 != null && v14 != null && v15 != null && v16 != null) { 2683 | mediator.setValueIfNotEqual(Tuple16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)) 2684 | } 2685 | } 2686 | } -------------------------------------------------------------------------------- /livedata-combinetuple-kt/src/main/java/com/zhuinden/livedatacombinetuplekt/LiveDataHelper.kt: -------------------------------------------------------------------------------- 1 | package com.zhuinden.livedatacombinetuplekt 2 | 3 | import androidx.lifecycle.MutableLiveData 4 | 5 | internal fun MutableLiveData.setValueIfNotEqual(arg: T) { 6 | @Suppress("SuspiciousEqualsCombination") 7 | fun objectsEquals(a: T?, b: T?): Boolean { 8 | return (a === b) || (a != null && a == b) 9 | } 10 | 11 | val value = value 12 | if (!objectsEquals(value, arg)) { 13 | this.value = arg 14 | } 15 | } -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | include(":livedata-combinetuple-kt") --------------------------------------------------------------------------------