Skip to content

Instantly share code, notes, and snippets.

View wolfgio's full-sized avatar
🎯
working hard

Giovanny Piovesan wolfgio

🎯
working hard
  • Nubank
  • São Paulo, Brasil
  • 17:12 (UTC -03:00)
  • X @_wolfgio
View GitHub Profile
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=/Users/giovanny/.oh-my-zsh
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="norm"
@wolfgio
wolfgio / user-redux.js
Created March 3, 2020 14:41
Custom hooks that wrap all redux dispatch and state based on a feature
import { useSelector, useDispatch } from 'react-redux';
const useRedux = feature => {
const state = useSelector(store => store[feature.name]);
const dispatch = useDispatch();
const dispatchAction = payload => action => dispatch(action(payload));
const actions = Object.keys(feature.actions).reduce((prev, key) => {
return {
...prev,
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/customerQuery/bloc.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/store/bloc.dart';
import 'package:neopag_mobile_store_v2/components/suitability/chatMessageFrame.dart';
import 'package:neopag_mobile_store_v2/helpers/dataProvider.dart';
import 'package:neopag_mobile_store_v2/helpers/helpers.dart';
import 'package:flutter/material.dart';
class CompletedButtons extends StatefulWidget {
final Function onSubmit;
final Function onRetry;
CompletedButtons({
@required this.onRetry,
@required this.onSubmit,
});
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:neopag_mobile_store_v2/colors.dart';
enum ChatMessageFrameAlignment { left, right }
class ChatMessageFrame extends StatefulWidget {
final ChatMessageFrameAlignment alignment;
import 'dart:async';
import 'package:flutter/material.dart';
class AnswerButtons extends StatefulWidget {
final List<dynamic> options;
final Function onAnswered;
AnswerButtons({
@required this.options,
import 'dart:async';
import 'package:flutter/material.dart';
import 'chatMessageFrame.dart';
class TypingFeedback extends StatefulWidget {
final Function callback;
TypingFeedback({
@required this.callback,
});
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/customerQuery/bloc.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/store/bloc.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/suitability/bloc.dart';
import 'package:neopag_mobile_store_v2/components/customerHeader.dart';
import 'package:neopag_mobile_store_v2/components/suitability/answerButtons.dart';
import 'package:neopag_mobile_store_v2/components/suitability/chatMessageFrame.dart';
import 'package:neopag_mobile_store_v2/components/suitability/completedButtons.dart';
import 'package:neopag_mobile_store_v2/components/suitability/typingFeedback.dart';
enum EnvMode { dev, staging, prod }
class EnvProvider {
static final EnvProvider _instance = new EnvProvider._();
EnvMode _env;
Map<String, dynamic> devEnv = {
'label': 'Development',
'baseUrl': 'https://randomurl',
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:neopag_mobile_store_v2/bloc/modules/webView/bloc.dart';
import 'package:neopag_mobile_store_v2/helpers/envProvider.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewScreen extends StatefulWidget {
final String route;
final String title;
final String urlParams;