Skip to content
Snippets Groups Projects
Commit bf6265c2 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Improve Onboarding launch

- Launch onboarding from StartActivity instead of MainActivity
- Launch it until it's been completed
parent 59fae302
No related branches found
No related tags found
No related merge requests found
......@@ -85,7 +85,7 @@ public class StartActivity extends FragmentActivity {
/* Check if it's the first run */
final boolean firstRun = savedVersionNumber == -1;
final boolean upgrade = firstRun || savedVersionNumber != currentVersionNumber;
if (upgrade) settings.edit().putInt(Constants.PREF_FIRST_RUN, currentVersionNumber).apply();
if (upgrade && !firstRun) settings.edit().putInt(Constants.PREF_FIRST_RUN, currentVersionNumber).apply();
final boolean tv = showTvUi();
// Route search query
if (Intent.ACTION_SEARCH.equals(action) || "com.google.android.gms.actions.SEARCH_ACTION".equals(action)) {
......@@ -115,22 +115,25 @@ public class StartActivity extends FragmentActivity {
}
private void startApplication(final boolean tv, final boolean firstRun, final boolean upgrade, final int target) {
final boolean onboarding = firstRun && !tv && !Settings.INSTANCE.getInstance(StartActivity.this).getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false);
// Start Medialibrary from background to workaround Dispatchers.Main causing ANR
// cf https://github.com/Kotlin/kotlinx.coroutines/issues/878
if (!firstRun || tv || Settings.INSTANCE.getInstance(StartActivity.this).getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false)) {
if (!onboarding) {
new Thread(new Runnable() {
@Override
public void run() {
MediaParsingServiceKt.startMedialibrary(StartActivity.this, firstRun, upgrade, true);
}
}).start();
final Intent intent = new Intent(StartActivity.this, tv ? MainTvActivity.class : MainActivity.class)
.putExtra(Constants.EXTRA_FIRST_RUN, firstRun)
.putExtra(Constants.EXTRA_UPGRADE, upgrade);
if (tv && getIntent().hasExtra(Constants.EXTRA_PATH)) intent.putExtra(Constants.EXTRA_PATH, getIntent().getStringExtra(Constants.EXTRA_PATH));
if (target != 0) intent.putExtra(Constants.EXTRA_TARGET, target);
startActivity(intent);
} else {
OnboardingActivityKt.startOnboarding(StartActivity.this);
}
final Intent intent = new Intent(StartActivity.this, tv ? MainTvActivity.class : MainActivity.class)
.putExtra(Constants.EXTRA_FIRST_RUN, firstRun)
.putExtra(Constants.EXTRA_UPGRADE, upgrade);
if (tv && getIntent().hasExtra(Constants.EXTRA_PATH)) intent.putExtra(Constants.EXTRA_PATH, getIntent().getStringExtra(Constants.EXTRA_PATH));
if (target != 0) intent.putExtra(Constants.EXTRA_TARGET, target);
startActivity(intent);
}
private void startPlaybackFromApp(Intent intent) {
......
......@@ -113,10 +113,7 @@ public class MainActivity extends ContentActivity implements ExtensionManagerSer
}
}, 500);
}
if (getIntent().getBooleanExtra(Constants.EXTRA_FIRST_RUN, false)
&& !mSettings.getBoolean(OnboardingActivityKt.ONBOARDING_DONE_KEY, false)) {
OnboardingActivityKt.startOnboarding(MainActivity.this);
} else Permissions.checkReadStoragePermission(MainActivity.this, false);
Permissions.checkReadStoragePermission(MainActivity.this, false);
}
/* Set up the action bar */
......
......@@ -13,8 +13,10 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.ViewPager
import kotlinx.coroutines.*
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.MediaParsingService
import org.videolan.vlc.R
import org.videolan.vlc.gui.MainActivity
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate
import org.videolan.vlc.gui.preferences.PreferencesActivity
import org.videolan.vlc.gui.view.NonSwipeableViewPager
......@@ -105,7 +107,7 @@ class OnboardingActivity : AppCompatActivity(), ViewPager.OnPageChangeListener,
}
}
doneButton.setOnClickListener { finish() }
doneButton.setOnClickListener { completeOnBoarding() }
val count = viewModel.adapterCount
......@@ -126,18 +128,15 @@ class OnboardingActivity : AppCompatActivity(), ViewPager.OnPageChangeListener,
.putBoolean(ONBOARDING_DONE_KEY, true)
.putInt(KEY_MEDIALIBRARY_SCAN, if (viewModel.scanStorages) ML_SCAN_ON else ML_SCAN_OFF)
.putInt("fragment_id", if (viewModel.scanStorages) R.id.nav_video else R.id.nav_directories)
.putInt(PREF_FIRST_RUN, BuildConfig.VERSION_CODE)
.apply()
launch {
if (!viewModel.scanStorages) {
MediaParsingService.preselectedStorages.clear()
}
startMedialibrary(firstRun = true, upgrade = true, parse = viewModel.scanStorages)
}
}
override fun finish() {
completeOnBoarding()
super.finish()
if (!viewModel.scanStorages) MediaParsingService.preselectedStorages.clear()
startMedialibrary(firstRun = true, upgrade = true, parse = viewModel.scanStorages)
val intent = Intent(this@OnboardingActivity, MainActivity::class.java)
.putExtra(EXTRA_FIRST_RUN, true)
.putExtra(EXTRA_UPGRADE, true)
startActivity(intent)
finish()
}
override fun onBackPressed() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment