Skip to content

Instantly share code, notes, and snippets.

import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import {
compose,
unless,
prop,
isNil,
merge,
propOr,
tryCatch,
@kalda341
kalda341 / hooks.js
Last active November 20, 2019 03:57
import { useEffect, useRef, useReducer } from 'react';
import { merge, forEach, reject, append } from 'ramda';
export const useIsMounted = () => {
const ref = useRef(null);
useEffect(() => {
ref.current = true;
return () => {
ref.current = false;
};
from django.db import transaction
from .models import Project as ProjectModel
from .errors import RevisionError, check_user_organisation
from . import project_file_services
def to_model(project):
return ProjectModel(
id=project.id,
revision=project.revision,
import os
from psycopg2 import connect
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
if __name__ == "__main__":
con = connect(
host=os.environ["DJANGO_DB_HOST"],
port=os.environ["DJANGO_DB_PORT"],
user=os.environ["DJANGO_DB_USER"],
const saveTask = useTask(function*() {
yield timeout(1000);
yield doSaveTask.perform();
}, 'RESTARTABLE');
const doSaveTask = useTask(function*() {
// Ensure that we ALWAYS have the most recent project state
const currentState = yield getMostRecentProjectState();
const { revision } = yield updateProject(authHeaders, currentState);
yield _setProjectState(assoc('revision', revision));
const Task = (func, args) => {
const taskState = {
isRunning: false,
isCancelled: false,
isFinished: false,
isError: false,
result: null,
error: null
};
let resolve = null;
let reject = null;
const promise = new Promise((resolve, reject) => {
resolve = resolve;
reject = reject;
});
import React, { useContext } from 'react';
import TestRenderer from 'react-test-renderer';
import { AuthProvider, AuthContext } from './AuthContext';
const token = expiry => '.' + btoa(JSON.stringify({ exp: expiry / 1000 }));
describe('AuthProvider', () => {
let providerContext = null;
let mount = null;
let unmount = null;
export function AuthProvider({
loadToken,
saveToken,
requestToken,
refreshToken,
children
}) {
const [loadingState, dispatchLoading] = useLoadingReducer({
isLoading: true
});
public prepForXml(): IXmlableObject | undefined {
if (this.sections.length === 1) {
this.root.push(this.sections.pop() as SectionProperties);
}
return super.prepForXml();
}