Skip to content

Instantly share code, notes, and snippets.

View ozcanzaferayan's full-sized avatar
⚛️
Overreacting

Özcan Zafer AYAN ozcanzaferayan

⚛️
Overreacting
View GitHub Profile
@ozcanzaferayan
ozcanzaferayan / api.js
Created January 27, 2020 19:30
services directory
import { schema, normalize } from 'normalizr'
import 'isomorphic-fetch'
import { responseMessageSchema } from 'schemas'
const API_ROOT = 'https://api.myjson.com/'
function callApi(endpoint, schema) {
const fullUrl = (endpoint.indexOf(API_ROOT) === -1) ? API_ROOT + endpoint : endpoint
return fetch(fullUrl)
@ozcanzaferayan
ozcanzaferayan / index.js
Last active January 27, 2020 19:11
actions directory
const REQUEST = 'REQUEST'
const SUCCESS = 'SUCCESS'
const FAILURE = 'FAILURE'
function createRequestTypes(base) {
return [REQUEST, SUCCESS, FAILURE].reduce((acc, type) => {
acc[type] = `${base}_${type}`
return acc
}, {})
}
import React from 'react';
import { View, Text, Platform, Image, TouchableOpacity } from 'react-native';
import { createDrawerNavigator } from 'react-navigation-drawer';
import { createStackNavigator } from 'react-navigation-stack';
import ProfileScreen from './ProfileScreen';
import OtherScreen from '../OtherScreen';
import ProfileDrawer from './ProfileDrawer';
import images from 'res/images';
const routeConfig = {
import React from 'react';
import { View, Text, SafeAreaView } from 'react-native';
import ProfileDrawerItem from './ProfileDrawerItem';
import images from 'res/images';
import colors from 'res/colors';
const ProfileDrawer = () => {
return (
<SafeAreaView style={{ flex: 1, backgroundColor: colors.background, justifyContent: 'space-between' }}>
<View>
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import { createStackNavigator } from 'react-navigation-stack';
import palette from 'res/palette';
import colors from 'res/colors';
import ActivityScreen from './ActivityScreen';
const ActivityNavigator = createStackNavigator({
Activity: {
screen: ActivityScreen,
import React from 'react';
import { View, Image, Text, StyleSheet, TouchableOpacity, } from 'react-native';
import ProfilePicture from 'components/ProfilePicture';
import ActivityDescription from './ActivityDescription';
const Activity = (props) => {
return <View style={styles.container}>
<ProfilePicture item={props.item} size={55} />
<ActivityDescription item={props.item} />
import React from 'react';
import { View, StyleSheet, Image, TouchableOpacity, Text, } from 'react-native';
import { createStackNavigator } from 'react-navigation-stack';
import images from 'res/images';
import palette from 'res/palette';
import AddPostScreen from './AddPostScreen';
import colors from 'res/colors';
const AddPostNavigator = createStackNavigator({
Home: {
import React from 'react';
import { View, Text, StyleSheet, Image, TouchableOpacity } from 'react-native';
import { createStackNavigator } from 'react-navigation-stack';
import images from 'res/images';
import SearchScreen from './SearchScreen';
import palette from 'res/palette';
import colors from 'res/colors';
const SearchNavigator = createStackNavigator({
Search: {
import React from 'react';
import { View, StyleSheet, Image, Text, TouchableOpacity } from 'react-native';
import colors from 'res/colors';
import images from 'res/images';
import prettyTime from 'utils/prettyTime';
import ProfilePicture from 'components/ProfilePicture';
const MessageListItem = (props) => {
const prettyTimeTemplates = {
short: {
import React from 'react';
import { StyleSheet, Text, } from 'react-native';
import colors from 'res/colors';
import { TouchableOpacity } from 'react-native-gesture-handler';
import prettyTime from 'utils/prettyTime';
const PostPublishDate = ({ post }) => {
const prettyTimeTemplates = {
long: {
prefix: "",