Skip to content

Instantly share code, notes, and snippets.

View diefferson's full-sized avatar
🎯
Focusing

Diefferson Santos diefferson

🎯
Focusing
View GitHub Profile
class CounterBloc {
final _counterSubject = BehaviorSubject<Int>();
Stream<Int> get counterStream => _counterSubject.stream;
}
class CounterBloc {
final counterSubject = BehaviorSubject<Int>();
}
class CounterBloc {
final _counterController = StreamController<Int>();
Sink<Int> get _counterSink => _counterController.sink;
Stream<Int> get counterStream => _counterControler.stream;
}
@diefferson
diefferson / AppResult.swift
Last active October 21, 2020 13:22
Swift Base Use Case
typealias UseCaseRun<Parameters, ResultType> = (_ parameters: Parameters, _ completion: @escaping (_ result: Result<ResultType, Error>) -> Void ) throws -> Void
public class AppResult<ResultType, Parameters> {
private var onSuccess: (ResultType) -> Void = {_ in }
private var onFailure: (Error) -> Void = {_ in }
init(
parameters: Parameters,
_ useCaseRun: UseCaseRun<Parameters, ResultType>
@diefferson
diefferson / MainCoroutineRule.kt
Last active June 16, 2020 19:19
MainCoroutineRule
@ExperimentalCoroutinesApi
class MainCoroutineRule(
val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
) : TestWatcher() {
override fun starting(description: Description?) {
super.starting(description)
Dispatchers.setMain(testDispatcher)
}
@diefferson
diefferson / single_subject.dart
Created April 3, 2020 14:58
Dart Single Subject
import 'dart:async';
import 'package:async/async.dart';
import 'package:rxdart/src/rx.dart';
import 'package:rxdart/src/streams/value_stream.dart';
import 'package:rxdart/src/subjects/subject.dart';
import 'package:rxdart/src/transformers/start_with.dart';
import 'package:rxdart/src/transformers/start_with_error.dart';
/// A special StreamController that emits only a item and clean after listen.
@diefferson
diefferson / Token.kt
Created March 27, 2020 20:10
Kotlin OTP
import java.nio.ByteBuffer
import java.security.InvalidKeyException
import java.security.NoSuchAlgorithmException
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
class Token @Throws(TokenUriInvalidException::class) constructor(secretText: String) {
private val algo: String = "sha1"
private val digits: Int = 6
@diefferson
diefferson / RatingViewModelTest.kt
Created March 13, 2020 15:18
Clean architecture viewModel test
@ExperimentalCoroutinesApi
class RatingViewModelTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
private lateinit var viewModel: RatingViewModel
private val setRatedCase: SetRated = mock()
private val testDispatcher = TestCoroutineDispatcher()
@diefferson
diefferson / BaseInteractorTest.kt
Last active March 13, 2020 14:15
CoroutinesTest
abstract class BaseInteractorTest : KoinTest {
@CallSuper
@Before
open fun setup(){
Dispatchers.setMain(Dispatchers.Unconfined)
startKoin { modules(domainModules()) }
//declareMock<ErrorHandler>()
}
@diefferson
diefferson / my_custom_route.dart
Created February 20, 2020 15:46
Flutter Slide Transition
class MyCustomPageRoute extends MaterialPageRoute {
final Widget previousPage;
MyCustomPageRoute({this.previousPage, WidgetBuilder builder, RouteSettings settings}) : super(builder: builder, settings: settings);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget currentPage) {
Animation<Offset> _slideAnimationPage1 = Tween<Offset>(begin: Offset(0.0, 0.0), end: Offset(-1.0, 0.0)).animate(animation);
Animation<Offset> _slideAnimationPage2 = Tween<Offset>(begin: Offset(1.0, 0.0), end: Offset(0.0, 0.0)).animate(animation);
return Stack(
children: <Widget>[