Skip to content

Instantly share code, notes, and snippets.

View juliuscanute's full-sized avatar
💭
I may be slow to respond.

juliuscanute

💭
I may be slow to respond.
View GitHub Profile
@juliuscanute
juliuscanute / CreatureDataRepository.kt
Created December 9, 2019 10:16
[Data layer Demo Two] #clean #architecture
package com.raywenderlich.android.creatures.data
class CreatureDataRepository @Inject constructor(private val factory: CreatureDataStoreFactory,
private val creatureMapper: CreatureMapper) : CreatureRepository {
override fun clearCreatures(): Completable {
return factory.retrieveCacheDataStore().clearCreatures()
}
override fun saveCreatures(creatures: List<Creature>): Completable {
@juliuscanute
juliuscanute / BrowseActivityModule.kt
Last active December 11, 2019 09:50
[UI Layer Demo Two] #clean #architecture #android
package com.raywenderlich.android.creatures.ui.injection.module
/**
* Module used to provide dependencies at an activity-level.
*/
@Module
open class BrowseActivityModule {
@Provides
fun provideBrowseCreaturesViewModelFactory(getCreatures: GetCreatures,
@juliuscanute
juliuscanute / AddTodoItemTableViewController.swift
Last active December 11, 2019 20:28
[UI Layer iOS MVC] #clean #architecture #swift #mvc
import UIKit
protocol AddTodoItemDelegate: class {
func addItemViewControllerDidCancel(_ controller: AddTodoItemTableViewController)
func addItemViewController(_ controller: AddTodoItemTableViewController, didFinishAdding item: TodoItem)
func addItemViewController(_ controller: AddTodoItemTableViewController, didFinishEditing item: TodoItem)
}
class AddTodoItemTableViewController: UITableViewController {
@immutable
class EmotionAppState {
final bool isDatabaseOpen;
final String emoji;
final String emotion;
final List<SavedDetail> details;
final int index;
final bool loadComplete;
EmotionAppState(
@juliuscanute
juliuscanute / pubspec.yaml
Created December 14, 2019 03:14
Dependencies Flutter Redux
dependencies:
redux: ^3.0.0
flutter_redux: ^0.5.2
flutter_redux_navigation: ^0.4.1
rxdart: ^0.20.0
@juliuscanute
juliuscanute / main.dart
Last active December 14, 2019 03:22
Navigation Initialise Store
class MyApp extends StatefulWidget {
final Store<EmotionAppState> store = new Store<EmotionAppState>(
emotionAppReducer,
initialState: EmotionAppState(isDatabaseOpen: false, loadComplete: false),
middleware: createLoginMiddleware(DataProviderImplementation()),
);
_MyAppState createState() => _MyAppState();
}
@juliuscanute
juliuscanute / main.dart
Last active December 14, 2019 06:19
Navigation Setup
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
//...
child: MaterialApp(
navigatorKey: NavigatorHolder.navigatorKey,
home: MyHomePage(),
routes: {
'/all-emotions': (BuildContext context) => MyHomePage(),
'/list-emotions': (BuildContext context) => EmotionsList(),
@juliuscanute
juliuscanute / middleware.dart
Last active December 14, 2019 06:12
Navigation Middleware
List<Middleware<EmotionAppState>> createLoginMiddleware(
[DataProvider provider]) {
//...
return [
//...
NavigationMiddleware<EmotionAppState>()
];
}
//...
}
@juliuscanute
juliuscanute / home_page.dart
Created December 14, 2019 03:42
Move from [1] to [2]
class _ViewModel {
final Store<EmotionAppState> store;
const _ViewModel({this.store});
static _ViewModel fromStore(Store<EmotionAppState> store) {
return _ViewModel(store: store);
}
void addNewEmotion() {
store.dispatch(NavigateToAction.push('/list-emotions'));
}
//...
@juliuscanute
juliuscanute / emotions_list.dart
Last active December 14, 2019 21:28
Move from screen [2] to [3]
class _ViewModel {
final Store<EmotionAppState> store;
const _ViewModel({this.store});
static _ViewModel fromStore(Store<EmotionAppState> store) {
return _ViewModel(store: store);
}
void addEmotionDescription(String emotionType, String emotionDescription) {
//...
store.dispatch(NavigateToCreateEmotion(
emoji: emotionType, emotion: emotionDescription));