Skip to content

Instantly share code, notes, and snippets.

View slorber's full-sized avatar
🏠
Working from home

Sébastien Lorber slorber

🏠
Working from home
View GitHub Profile
@slorber
slorber / ShareViewController.swift
Created October 19, 2015 11:21
iOS Share Extension - Mobile clipper
//
// ShareViewController.swift
// Stample-clipper
//
// Created by Sébastien Lorber on 15/10/2015.
//
//
import UIKit
import Social
export const intersperse = <T>(arr: T[], separator: (n: number) => T): T[] =>
arr.flatMap(arr, (a, i) => i > 0 ? [separator(i-1), a] : [a]))
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
app.receivedEvent('deviceready');
import React, {
useCallback,
useEffect,
useMemo,
useRef,
useState,
} from 'react';
import useConstant from 'use-constant';
import produce from 'immer';
import { useIsMountedFn } from './useIsMounted';
@slorber
slorber / ElementContainer.js
Created September 20, 2018 11:56
ElementContainer.js
import React from 'react';
const generateHolderKey = (() => {
let counter = 0;
return () => {
counter += 1;
return `holder_${counter}`;
};
})();
const setupAppOverTheAirUpdates = () => {
const checkForUpdates = async () => {
if (__DEV__) {
console.debug('checkForUpdates disabled in DEV');
return;
}
try {
const update = await Updates.checkForUpdateAsync();
console.debug('checkForUpdates result', update);
if (update.isAvailable) {
import { Alert } from 'react-native';
// An alert implementation that returns a promise when the choise is done
export const AlertAsync = (
title,
message,
buttons = [],
options = {},
type,
) => {
import React from 'react';
// Permit to create a provider/consumer but allow the consumer
// to also receive a setter to update the provider value
export const createUpdatableContext = () => {
const { Provider, Consumer } = React.createContext(null);
class UpdatableContextProvider extends React.Component {
constructor(props) {
super(props);
import React from 'react';
import { AppLoading } from 'expo';
import { Centered } from 'common/components/utils/Layout';
import { BaseText } from 'common/styleguide/texts';
import SimpleButton from 'common/components/buttons/SimpleButton';
import CustomSafeAreaView from 'common/components/utils/CustomSafeAreaView';
import { reportError } from 'AppSentry';
const TechnicalErrorScreen = ({ onRetry }) => (
<CustomSafeAreaView>
import React, { Component } from 'react';
import {View} from "glamorous-native";
import * as Colors from "colors";
import {getColor} from "colors";
import { greyD } from "colors";
const Separator = ({