diff --git a/zcash-android-wallet-app/app/libs/zcash-android-wallet-sdk-1.7.0.aar b/zcash-android-wallet-app/app/libs/zcash-android-wallet-sdk-1.7.0.aar new file mode 100644 index 0000000..1b07e53 Binary files /dev/null and b/zcash-android-wallet-app/app/libs/zcash-android-wallet-sdk-1.7.0.aar differ diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt index 529fa39..c2a11dd 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt @@ -42,6 +42,8 @@ import kotlinx.coroutines.channels.ReceiveChannel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import javax.inject.Inject +import kotlin.random.Random +import kotlin.random.nextInt class MainActivity : BaseActivity() { @@ -49,6 +51,7 @@ class MainActivity : BaseActivity() { lateinit var synchronizer: Synchronizer lateinit var binding: ActivityMainBinding + lateinit var loadMessages: List // used to manage the drawer and drawerToggle interactions private lateinit var appBarConfiguration: AppBarConfiguration @@ -62,7 +65,7 @@ class MainActivity : BaseActivity() { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) initAppBar() - + loadMessages = generateFunLoadMessages().shuffled() synchronizer.start(this) } @@ -70,7 +73,6 @@ class MainActivity : BaseActivity() { setSupportActionBar(findViewById(R.id.main_toolbar)) // supportActionBar?.setDisplayHomeAsUpEnabled(false) setupNavigation() - supportActionBar?.setTitle("main title") } override fun onDestroy() { @@ -128,12 +130,37 @@ class MainActivity : BaseActivity() { } } + fun nextLoadMessage(index: Int = -1): String { + return if (index < 0) loadMessages.random() else loadMessages[index] + } companion object { init { // Enable vector drawable magic AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) } + + // TODO: move these lists, once approved + fun generateSeriousLoadMessages(): List { + return listOf( + "Initializing your shielded address", + "Connecting to testnet", + "Downloading historical blocks", + "Synchronizing to current blockchain", + "Searching for past transactions", + "Validating your balance" + ) + } + fun generateFunLoadMessages(): List { + return listOf( + "Reticulating splines", + "Making the sausage", + "Drinking the kool-aid", + "Learning to spell Lamborghini", + "Asking Zooko, \"when moon?!\"", + "Pretending to look busy" + ) + } } } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/adapter/TransactionAdapter.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/adapter/TransactionAdapter.kt index 1df114d..c243a91 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/adapter/TransactionAdapter.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/adapter/TransactionAdapter.kt @@ -4,23 +4,25 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView +import androidx.annotation.LayoutRes import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import cash.z.android.wallet.R import cash.z.android.wallet.extention.toAppColor -import cash.z.wallet.sdk.dao.WalletTransaction import cash.z.wallet.sdk.ext.convertZatoshiToZec import cash.z.wallet.sdk.ext.toZec import java.text.SimpleDateFormat +import cash.z.wallet.sdk.dao.WalletTransaction import java.util.* import kotlin.math.absoluteValue -class TransactionAdapter : ListAdapter(DIFF_CALLBACK) { +class TransactionAdapter(@LayoutRes val itemResId: Int = R.layout.item_transaction) : ListAdapter(DIFF_CALLBACK) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TransactionViewHolder { - val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_transaction, parent, false) + val itemView = LayoutInflater.from(parent.context).inflate(itemResId, parent, false) return TransactionViewHolder(itemView) } override fun onBindViewHolder(holder: TransactionViewHolder, position: Int) = holder.bind(getItem(position)) @@ -33,19 +35,26 @@ private val DIFF_CALLBACK = object : DiffUtil.ItemCallback() class TransactionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private val status = itemView.findViewById(R.id.view_transaction_status) + private val icon = itemView.findViewById(R.id.image_transaction_type) private val timestamp = itemView.findViewById(R.id.text_transaction_timestamp) private val amount = itemView.findViewById(R.id.text_transaction_amount) + private val address = itemView.findViewById(R.id.text_transaction_address) private val formatter = SimpleDateFormat("M/d h:mma", Locale.getDefault()) fun bind(tx: WalletTransaction) { - val sign = if(tx.isSend) "-" else "+" + val sign = if (tx.isSend) "-" else "+" val amountColor = if (tx.isSend) R.color.text_dark_dimmed else R.color.colorPrimary - val transactionColor = if(tx.isSend) R.color.send_associated else R.color.receive_associated + val transactionColor = if (tx.isSend) R.color.send_associated else R.color.receive_associated + val transactionIcon = if (tx.isSend) R.drawable.ic_sent_transaction else R.drawable.ic_received_transaction val zecAbsoluteValue = tx.value.absoluteValue.convertZatoshiToZec(3) - status.setBackgroundColor(transactionColor.toAppColor()) + val senderAddress = if (tx.address != null) "to ${tx.address}" else "from shielded mystery person" timestamp.text = if (!tx.isMined || tx.timeInSeconds == 0L) "Pending" else formatter.format(tx.timeInSeconds * 1000) - Log.e("TWIG-z", "TimeInSeconds: ${tx.timeInSeconds}") amount.text = "$sign$zecAbsoluteValue" amount.setTextColor(amountColor.toAppColor()) + + // maybes - and if this gets to be too much, then pass in a custom holder when constructing the adapter, instead + status?.setBackgroundColor(transactionColor.toAppColor()) + address?.text = senderAddress + icon?.setImageResource(transactionIcon) } } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/FirstrunFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/FirstrunFragment.kt index 23a8370..2c4e889 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/FirstrunFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/FirstrunFragment.kt @@ -66,6 +66,11 @@ class FirstrunFragment : ProgressFragment(R.id.progress_firstrun), Transition.Tr } } + override fun showProgress(progress: Int) { + super.showProgress(progress) + binding.textProgressFirstrun.text = getProgressText(progress) + } + override fun onProgressComplete() { super.onProgressComplete() binding.textProgressFirstrun.visibility = View.GONE diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HistoryFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HistoryFragment.kt index 5c2cd68..8383347 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HistoryFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HistoryFragment.kt @@ -32,10 +32,11 @@ class HistoryFragment : BaseFragment(), HistoryPresenter.HistoryView { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) + mainActivity.setToolbarShown(true) historyPresenter = HistoryPresenter(this, mainActivity.synchronizer) binding.recyclerTransactionsHistory.apply { layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false) - adapter = TransactionAdapter() + adapter = TransactionAdapter(R.layout.item_transaction_history) addItemDecoration(AlternatingRowColorDecoration()) } } @@ -53,7 +54,13 @@ class HistoryFragment : BaseFragment(), HistoryPresenter.HistoryView { } override fun setTransactions(transactions: List) { - (binding.recyclerTransactionsHistory.adapter as TransactionAdapter).submitList(transactions) + mainActivity.supportActionBar?.setTitle(resources.getQuantityString(R.plurals.history_transaction_count_title, transactions.size, transactions.size)) + with (binding.recyclerTransactionsHistory) { + (adapter as TransactionAdapter).submitList(transactions) + postDelayed({ + smoothScrollToPosition(0) + }, 100L) + } } } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt index 532600a..228abdd 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt @@ -83,13 +83,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP super.onViewCreated(view, savedInstanceState) initTemp() init() -// launch { -// Log.e("TWIG", "deciding whether to show first run") -// val extraDelay = measureTimeMillis { -// setFirstRunShown(mainActivity.synchronizer.isFirstRun() || mainActivity.synchronizer.isOutOfSync()) -// } -// Log.e("TWIG", "done deciding whether to show first run in $extraDelay ms. Was that worth it? Or should we toggle a boolean in the application class?") -// } } override fun onActivityCreated(savedInstanceState: Bundle?) { @@ -105,6 +98,9 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP adapter = TransactionAdapter() addItemDecoration(AlternatingRowColorDecoration()) } + binding.includeContent.textTransactionHeaderSeeAll.setOnClickListener { + mainActivity.navController.navigate(R.id.nav_history_fragment) + } } override fun onResume() { @@ -170,44 +166,16 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP } override fun setTransactions(transactions: List) { + val recent = if(transactions.size > 12) transactions.subList(0, 12) else transactions with (binding.includeContent.recyclerTransactions) { - (adapter as TransactionAdapter).submitList(transactions.sortedByDescending { - it.timeInSeconds - }) + (adapter as TransactionAdapter).submitList(recent) postDelayed({ smoothScrollToPosition(0) }, 100L) - if (binding.includeFirstRun.visibility == View.VISIBLE) setFirstRunShown(false) } - } - - override fun showProgress(progress: Int) { - if(progress >= 100) { - view?.postDelayed({ - onInitialLoadComplete() - }, 3000L) - } else { - setRefreshAnimationPlaying(true).also { Log.e("TWIG-a", "refresh true from showProgress") } - binding.includeContent.textEmptyWalletMessage.setText(R.string.home_empty_wallet_updating) + if (recent.size != transactions.size) { + binding.includeContent.textTransactionHeaderSeeAll.visibility = View.VISIBLE } -// snackbar.showOk(view!!, "progress: $progress") - // TODO: improve this with Lottie animation. but for now just use the empty view for downloading... -// var hasEmptyViews = group_empty_view_items.visibility == View.VISIBLE -// if(!viewsInitialized) toggleViews(true) -// -// val message = if(progress >= 100) "Download complete! Processing blocks..." else "Downloading remaining blocks ($progress%)" -//// text_wallet_message.text = message -// -// if (snackbar == null && progress <= 50) { -// snackbar = Snackbar.make(view!!, "$message", Snackbar.LENGTH_INDEFINITE) -// .setAction("OK") { -// snackbar?.dismiss() -// } -// snackbar?.show() -// } else { -// snackbar?.setText(message) -// if(snackbar?.isShownOrQueued != true) snackbar?.show() -// } } private fun onInitialLoadComplete() { @@ -318,13 +286,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP }, delay) } - private fun setFirstRunShown(isShown: Boolean) { - binding.includeFirstRun.visibility = if (isShown) View.VISIBLE else View.GONE - mainActivity.setDrawerLocked(isShown) - binding.sdFab.visibility = if (!isShown) View.VISIBLE else View.GONE - binding.lottieZcashBadge.visibility = if(!isShown) View.VISIBLE else View.GONE - } - /** * General initialization called during onViewCreated. Mostly responsible for applying the default empty state of * the view, before any data or information is known. @@ -437,7 +398,6 @@ class HomeFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, HomeP if (situationHasChanged) { Log.e("TWIG-t", "The situation has changed! toggling views!") setContentViewShown(!isEmpty) - if (!isEmpty) setFirstRunShown(false) } setRefreshAnimationPlaying(false).also { Log.e("TWIG-a", "refresh false from onContentRefreshComplete") } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/ProgressFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/ProgressFragment.kt index 3a11289..28b0a60 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/ProgressFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/ProgressFragment.kt @@ -17,6 +17,7 @@ abstract class ProgressFragment(@IdRes private val progressBarId: Int) : BaseFra override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) progressBar = view.findViewById(progressBarId) +// progressBar.visibility = View.INVISIBLE } override fun onActivityCreated(savedInstanceState: Bundle?) { @@ -45,9 +46,24 @@ abstract class ProgressFragment(@IdRes private val progressBarId: Int) : BaseFra progressBar.visibility = View.GONE }) } + } else if (progress > 0 && progressBar.visibility != View.VISIBLE) { + progressBar.visibility = View.VISIBLE } progressBar.progress = progress } + + // TODO: replace this quick and dirty logic with something permanent + open fun getProgressText(progress: Int): String { + if (mainActivity == null) return "" + // cycle twice + val factor = 100 / (mainActivity.loadMessages.size * 2) + val index = (progress/factor).rem(mainActivity.loadMessages.size) + var message = "$progress% ${mainActivity.nextLoadMessage(index)}" + if (progress > 98) message = "Done!" + if (progress >= 50) message = message.replace("Zooko", "Zooko AGAIN", true).replace("Learning to spell", "Double-checking the spelling of").replace("the kool", "MORE kool", true).replace("Making the sausage", "Getting a little hangry by now!", true) + return message + } + open fun onProgressComplete() {} } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SyncFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SyncFragment.kt index 1d16b95..09857d0 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SyncFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SyncFragment.kt @@ -35,6 +35,8 @@ class SyncFragment : ProgressFragment(R.id.progress_sync) { binding.buttonNext.setOnClickListener { mainActivity.navController.navigate(R.id.nav_home_fragment) } + binding.progressSync.visibility = View.INVISIBLE + binding.textProgressSync.visibility = View.INVISIBLE } override fun onResume() { @@ -43,6 +45,12 @@ class SyncFragment : ProgressFragment(R.id.progress_sync) { mainActivity.setToolbarShown(true) } + override fun showProgress(progress: Int) { + binding.textProgressSync.text = getProgressText(progress) + binding.textProgressSync.visibility = View.VISIBLE + super.showProgress(progress) + } + override fun onProgressComplete() { super.onProgressComplete() binding.textProgressSync.visibility = View.GONE diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/WelcomeFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/WelcomeFragment.kt index b956ef8..aba494a 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/WelcomeFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/WelcomeFragment.kt @@ -23,6 +23,7 @@ import android.graphics.Matrix import android.util.Log import androidx.core.app.SharedElementCallback import androidx.transition.TransitionInflater +import cash.z.android.wallet.BuildConfig import cash.z.android.wallet.ui.presenter.ProgressPresenter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -50,13 +51,20 @@ class WelcomeFragment : ProgressFragment(R.id.progress_welcome) { } } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val network = if (resources.getBoolean(R.bool.is_testnet)) "Testnet 2.0.1" else "Mainnet 2.0.1" + var buildInfo = "PoC v${BuildConfig.VERSION_NAME} $network\nZcash Company - For demo purposes only" + binding.textWelcomeBuildInfo.text = buildInfo + } + override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) view!!.postDelayed({ launch { onNext() } - }, 2000L) + }, 5000L) // this.setExitSharedElementCallback(object : SharedElementCallback() { // override fun onCaptureSharedElementSnapshot( diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HistoryPresenter.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HistoryPresenter.kt index f15af14..5dee41e 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HistoryPresenter.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HistoryPresenter.kt @@ -7,6 +7,7 @@ import cash.z.wallet.sdk.data.ActiveSendTransaction import cash.z.wallet.sdk.data.ActiveTransaction import cash.z.wallet.sdk.data.Synchronizer import cash.z.wallet.sdk.data.TransactionState +import cash.z.wallet.sdk.data.twig import kotlinx.coroutines.* import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.channels.ReceiveChannel @@ -49,8 +50,8 @@ class HistoryPresenter( // private fun bind(transactions: List) { - Log.e("@TWIG", "binding ${transactions.size} walletTransactions") - view.setTransactions(transactions) + twig("binding ${transactions.size} walletTransactions") + view.setTransactions(transactions.sortedByDescending { it.timeInSeconds }) } } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HomePresenter.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HomePresenter.kt index 5d825d4..7244081 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HomePresenter.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/presenter/HomePresenter.kt @@ -23,7 +23,6 @@ class HomePresenter( interface HomeView : PresenterView { fun setTransactions(transactions: List) fun updateBalance(old: Long, new: Long) - fun showProgress(progress: Int) fun setActiveTransactions(activeTransactionMap: Map) fun onCancelledTooLate() } @@ -32,7 +31,6 @@ class HomePresenter( Log.e("@TWIG-t", "homePresenter starting!") launchBalanceBinder(synchronizer.balance()) launchTransactionBinder(synchronizer.allTransactions()) - launchProgressMonitor(synchronizer.progress()) launchActiveTransactionMonitor(synchronizer.activeTransactions()) } @@ -60,14 +58,6 @@ class HomePresenter( Log.e("@TWIG", "transaction binder exiting!") } - private fun CoroutineScope.launchProgressMonitor(channel: ReceiveChannel) = launch { - Log.e("@TWIG", "progress monitor starting on thread ${Thread.currentThread().name}!") - for (i in channel) { - bind(i) - } - Log.e("@TWIG", "progress monitor exiting!") - } - private fun CoroutineScope.launchActiveTransactionMonitor(channel: ReceiveChannel>) = launch { Log.e("@TWIG-v", "active transaction monitor starting!") for (i in channel) { @@ -89,12 +79,9 @@ class HomePresenter( private fun bind(transactions: List) = onMain { Log.e("@TWIG-b", "binding ${transactions.size} walletTransactions") - view.setTransactions(transactions) - } - - private fun bind(progress: Int) = onMain { - Log.e("@TWIG-b", "binding progress of $progress") - view.showProgress(progress) + view.setTransactions(transactions.sortedByDescending { + it.timeInSeconds + }) } private fun bind(activeTransactionMap: Map) = onMain { diff --git a/zcash-android-wallet-app/app/src/main/res/drawable/ic_warning.xml b/zcash-android-wallet-app/app/src/main/res/drawable/ic_warning.xml new file mode 100644 index 0000000..c40c909 --- /dev/null +++ b/zcash-android-wallet-app/app/src/main/res/drawable/ic_warning.xml @@ -0,0 +1,10 @@ + + + diff --git a/zcash-android-wallet-app/app/src/main/res/layout/fragment_history.xml b/zcash-android-wallet-app/app/src/main/res/layout/fragment_history.xml index 84421e8..3f02c08 100644 --- a/zcash-android-wallet-app/app/src/main/res/layout/fragment_history.xml +++ b/zcash-android-wallet-app/app/src/main/res/layout/fragment_history.xml @@ -5,8 +5,13 @@ - + android:layout_height="match_parent" + android:background="@color/fragment_history_background"> + - \ No newline at end of file diff --git a/zcash-android-wallet-app/app/src/main/res/layout/fragment_welcome.xml b/zcash-android-wallet-app/app/src/main/res/layout/fragment_welcome.xml index 143c83c..e99d734 100644 --- a/zcash-android-wallet-app/app/src/main/res/layout/fragment_welcome.xml +++ b/zcash-android-wallet-app/app/src/main/res/layout/fragment_welcome.xml @@ -1,6 +1,7 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + + - + app:layout_constraintTop_toTopOf="parent" /> + + + tools:text="8/23 3:24pm" /> diff --git a/zcash-android-wallet-app/app/src/main/res/values/booleans.xml b/zcash-android-wallet-app/app/src/main/res/values/booleans.xml new file mode 100644 index 0000000..27db33f --- /dev/null +++ b/zcash-android-wallet-app/app/src/main/res/values/booleans.xml @@ -0,0 +1,4 @@ + + + false + \ No newline at end of file diff --git a/zcash-android-wallet-app/app/src/main/res/values/colors.xml b/zcash-android-wallet-app/app/src/main/res/values/colors.xml index 2d0a740..cd6d332 100644 --- a/zcash-android-wallet-app/app/src/main/res/values/colors.xml +++ b/zcash-android-wallet-app/app/src/main/res/values/colors.xml @@ -71,10 +71,12 @@ @color/zcashBlack_light @color/colorPrimary @color/zcashWhite_light + @color/zcashWhite_light @color/zcashWhite_light @color/zcashPrimaryMedium @color/zcashBlack_12 @color/zcashBlueGray + @color/zcashWhite @color/zcashBlack_12 diff --git a/zcash-android-wallet-app/app/src/main/res/values/strings.xml b/zcash-android-wallet-app/app/src/main/res/values/strings.xml index 054deca..61adbbf 100644 --- a/zcash-android-wallet-app/app/src/main/res/values/strings.xml +++ b/zcash-android-wallet-app/app/src/main/res/values/strings.xml @@ -1,5 +1,7 @@ Zcash Wallet + Reference Wallet Alpha + Open navigation drawer Close navigation drawer Zcash Reference Wallet @@ -22,7 +24,7 @@ Getting Started Release Notes - History + Past Transactions About Settings Coming Soon @@ -53,7 +55,13 @@ Future transactions will show up here. Current Activity Past Activity + See All + + + %s Past Transactions + %s Past Transaction + Your Zcash shielded address diff --git a/zcash-android-wallet-app/app/src/mock/java/cash/z/android/wallet/di/module/SynchronizerModule.kt b/zcash-android-wallet-app/app/src/mock/java/cash/z/android/wallet/di/module/SynchronizerModule.kt index 82a09fc..7d2e6a8 100644 --- a/zcash-android-wallet-app/app/src/mock/java/cash/z/android/wallet/di/module/SynchronizerModule.kt +++ b/zcash-android-wallet-app/app/src/mock/java/cash/z/android/wallet/di/module/SynchronizerModule.kt @@ -15,8 +15,9 @@ import javax.inject.Singleton @Module internal object SynchronizerModule { - const val MOCK_TX_INTERVAL = 30_000L - const val MOCK_LOAD_DURATION = 5_000L + const val MOCK_LOAD_DURATION = 3_000L +// const val MOCK_LOAD_DURATION = 30_000L + const val MOCK_TX_INTERVAL = 5_000L const val MOCK_ACTIVE_TX_STATE_CHANGE_INTERVAL = 5_000L diff --git a/zcash-android-wallet-app/app/src/ztestnet/res/layout/fragment_sync.xml b/zcash-android-wallet-app/app/src/ztestnet/res/layout/fragment_sync.xml new file mode 100644 index 0000000..f0f2719 --- /dev/null +++ b/zcash-android-wallet-app/app/src/ztestnet/res/layout/fragment_sync.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + +