Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
| import Grib2class = require("grib2class"); | |
| import JpxImage = require("../jpx.min.js"); | |
| export class UVGrib2Parser { | |
| private parser | |
| constructor() { | |
| this.parser = new Grib2class({ | |
| log: false, |
| interface FragmentInjectable | |
| @SuppressLint("Registered") | |
| open class DiActivity : AppCompatActivity(), HasSupportFragmentInjector { | |
| @Inject | |
| internal lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment> | |
| override fun supportFragmentInjector() = fragmentInjector |
| class AppApplication : Application(), HasActivityInjector { | |
| @Inject | |
| lateinit var activityInjector: DispatchingAndroidInjector<Activity> | |
| override fun onCreate() { | |
| super.onCreate() | |
| ... | |
| DaggerAppComponent.builder().application(this).build().inject(this) |
| @Singleton | |
| @Component(modules = [AndroidSupportInjectionModule::class, ...]) | |
| interface AppComponent { | |
| @Component.Builder | |
| interface Builder { | |
| @BindsInstance | |
| fun application(context: Context): Builder | |
| fun build(): AppComponent |
| inline fun <reified T : ViewModel> FragmentActivity.injectViewModel(factory: ViewModelProvider.Factory): T { | |
| return ViewModelProviders.of(this, factory)[T::class.java] | |
| } | |
| inline fun <reified T : ViewModel> Fragment.injectViewModel(factory: ViewModelProvider.Factory): T { | |
| return ViewModelProviders.of(this, factory)[T::class.java] | |
| } |
| class DemoActivity : AppCompatActivity() { | |
| @Inject | |
| lateinit var viewModelFactory: ViewModelProvider.Factory | |
| lateinit var demoViewModel: DemoViewModel | |
| ... | |
| override fun onCreate(savedInstanceState: Bundle?) { | |
| super.onCreate(savedInstanceState) | |
| ... | |
| demoViewModel = ViewModelProviders.of(this, viewModelFactory)[DemoViewModel::class.java] |
| class ViewModelFactory @Inject constructor(private val viewModels: MutableMap<Class<out ViewModel>, Provider<ViewModel>>) : ViewModelProvider.Factory { | |
| override fun <T : ViewModel> create(modelClass: Class<T>): T { | |
| val viewModelProvider = viewModels[modelClass] | |
| ?: throw IllegalArgumentException("model class $modelClass not found") | |
| return viewModelProvider.get() as T | |
| } | |
| } |
| @Module | |
| abstract class DemoModule { | |
| @Binds | |
| @IntoMap | |
| @ViewModelKey(DemoViewModel::class) | |
| internal abstract fun demoViewModel(viewModel: DemoViewModel): ViewModel | |
| ... |
| @MustBeDocumented | |
| @Target(AnnotationTarget.FUNCTION, | |
| AnnotationTarget.PROPERTY_GETTER, | |
| AnnotationTarget.PROPERTY_SETTER) | |
| @Retention(AnnotationRetention.RUNTIME) | |
| @MapKey | |
| annotation class ViewModelKey(val value: KClass<out ViewModel>) |