Skip to content

Instantly share code, notes, and snippets.

View terrysahaidak's full-sized avatar

Terry Sahaidak terrysahaidak

View GitHub Profile
@terrysahaidak
terrysahaidak / build.sh
Created September 17, 2021 08:47
Build script for React Native Sentry with NVM
# First set the path to sentry.properties
export SENTRY_PROPERTIES=sentry.properties
# Setup nvm and set node
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
. "$HOME/.nvm/nvm.sh"
elif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then
. "$(brew --prefix nvm)/nvm.sh"
import React from 'react';
import Animated, {
useAnimatedGestureHandler,
useSharedValue,
useAnimatedStyle,
useDerivedValue,
} from 'react-native-reanimated';
import { View, Dimensions } from 'react-native';
import { PanGestureHandler } from 'react-native-gesture-handler';
import Animated, {
useSharedValue,
withTiming,
useAnimatedStyle,
Easing,
makeRemote,
withSpring,
processColor,
useValue,
delay as RDelay,
@terrysahaidak
terrysahaidak / promiseSequence.js
Created March 30, 2020 09:40
Promise Sequence
class Task {
constructor({ id, thunk }) {
this.id = id;
this.thunk = thunk;
this._done = false;
}
setDone() {
this._done = true;
}
@terrysahaidak
terrysahaidak / PinchHandlerWorklet.js
Created March 27, 2020 12:48
Pinch gesture handling based on Image Viewer example implemented using Reanimated Worklets
import React, { useRef } from 'react';
import { StyleSheet, View, Text } from 'react-native';
import Animated, {
useEventWorklet,
useSharedValue,
} from 'react-native-reanimated';
import {
PinchGestureHandler,
} from 'react-native-gesture-handler';
@terrysahaidak
terrysahaidak / ReanimatedWorkletsDemo.js
Last active February 16, 2023 14:16
Reanimated Worklets explanation
import React from 'react';
import { Text, View, Dimensions } from 'react-native';
import Animated, {
useSharedValue,
useWorklet,
useEventWorklet,
} from 'react-native-reanimated';
import { PanGestureHandler } from 'react-native-gesture-handler';
import { getStatusBarHeight } from 'react-native-status-bar-height';
import T from 'prop-types';
/* eslint-disable no-extra-boolean-cast */
const existsCheck = (value) =>
typeof value !== 'undefined' && value !== null;
export default function Ternary({
children,
exp,
exists,
@terrysahaidak
terrysahaidak / useAnimatedValue.ts
Created December 27, 2019 10:38
Hook for reanimated animated value
export default function useAnimatedValue(
value: number,
listener?: boolean | ((arg: any) => any),
debugLabel?: string,
) {
const lastValue = useRef(null);
const animatedValue = useMemo(() => new Animated.Value(value), []);
useEffect(() => {
@terrysahaidak
terrysahaidak / styled.js
Created December 20, 2019 20:52
Smallest styled components
function useStyles(styles) {
const [, forceUpdate] = useState();
const [width, height] = useDimensions();
useEffect(() => {
// TODO: debounce it
forceUpdate((v) => v + 1);
}, [width, height]);
@terrysahaidak
terrysahaidak / UserStore.js
Created November 23, 2019 19:19
Generic user store
let UserModel;
const ResolveUser = types
.model('ResolveUser', {
id: types.identifier,
})
.views((self) => ({
get user() {
return resolveIdentifier(UserModel, self, self.id);
},