Skip to content

Instantly share code, notes, and snippets.

View Armster15's full-sized avatar
👋
~~waves~~

Armaan A Armster15

👋
~~waves~~
View GitHub Profile
@Armster15
Armster15 / react-imperative-state.ts
Created July 7, 2024 01:10
React state that can be updated imperatively
import { useEffect, useState } from 'react';
export const createImperativeState = <State>(
initialState: State | (() => State)
) => {
let listeners: Array<(state: State) => void> = [];
let memoryState: State =
initialState instanceof Function ? initialState() : initialState;
@Armster15
Armster15 / UseReducerApp.tsx
Last active July 6, 2024 07:04
A basic React `useReducer` example
import { useReducer } from 'react';
import { todoReducer, TodoActionType } from './todos';
function App() {
const [state, dispatch] = useReducer(todoReducer, []);
function handleCreateNewTodo(ev: React.FormEvent<HTMLFormElement>) {
ev.preventDefault();
const content = String(new FormData(ev.currentTarget).get('content'));
dispatch({
@Armster15
Armster15 / ReactImperativeState.tsx
Created July 6, 2024 06:39
Imperatively update state in React. Based on logic from React Hot Toast
import { useStore, updateState } from './store';
function App() {
const store = useStore();
return (
<div>
<button
onClick={() => {
updateState({
@Armster15
Armster15 / use-media-recorder.ts
Last active June 10, 2024 05:30
A lightweight React hook for the `MediaRecorder` API that stays out of your way and makes it easy to record audio
import { useRef } from "react";
const ALL_MEDIA_RECORDER_EVENTS = [
"dataavailable",
"error",
"pause",
"resume",
"start",
"stop",
];
@Armster15
Armster15 / flask_rate_limits.py
Created January 11, 2024 00:14
Flask app with rate limits
from flask import Flask, jsonify
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
# Configure rate limiting with in-memory storage
limiter = Limiter(
get_remote_address,
app=app,
@Armster15
Armster15 / GooglePeriodicTableSearch.user.js
Last active July 30, 2022 05:41
Userscript that adds a search function to Google's periodic table
// ==UserScript==
// @name Google Periodic Table Search Function
// @version 1.0.0
// @description Adds a search function to Google's periodic table
// @author Armster15
// @match https://www.google.com/search?*
// @match https://www.google.com/search/?*
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com
// @grant none
// @namespace https://gist.github.com/Armster15/365487549125f1825c5d5219d8486ace
@Armster15
Armster15 / ApexLearningShowHideGrades.user.js
Created July 22, 2022 04:49
On a completed assessment, show and hide the answers so you can test your knowledge with completed quizzes. Great for preparing for bigger tests.
// ==UserScript==
// @name Apex Learning Show/Hide Assessment Grades
// @version 1.0.0
// @description On a completed assessment, show and hide the answers so you can test your knowledge with completed quizzes. Great for preparing for bigger tests.
// @author Armster15
// @license The Unlicense
// @match https://course.apexlearning.com/*
// @grant none
// @namespace https://gist.github.com/Armster15/d2e059575947558532983e9c6459581c
// @supportURL https://gist.github.com/Armster15/d2e059575947558532983e9c6459581c
@Armster15
Armster15 / RemoveOneNoteAnnotations.user.js
Last active May 22, 2022 20:25
A userscript for hiding OneNote drawing annotations with ease
// ==UserScript==
// @name Remove OneNote Annotations
// @version 1.0.0
// @description Need to hide drawing annotations in OneNote? This userscript is for you! It adds toggle buttons where you can hide/show the drawing annotations.
// @author Armster15
// @license The Unlicense
// @match https://usc-onenote.officeapps.live.com/*
// @icon https://i.imgur.com/84FaPib.png
// @grant none
// @namespace https://gist.github.com/Armster15/0c8941b3b9af6e55874f4e082c5dc714
@Armster15
Armster15 / AniList Stars to Smileys.user.js
Last active May 22, 2022 20:25
Converts the 5 star system to fire, smiley, meh, and frown icons, effectively creating a 4 point smiley system :)
// ==UserScript==
// @name AniList Stars to Smileys
// @version 1.0.0
// @description Converts the 5 star system to fire, smiley, meh, and frown icons
// @author Armster15
// @license The Unlicense
// @match https://anilist.co/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=anilist.co
// @grant none
// @namespace https://gist.github.com/Armster15/b82176835de0965485a72d64c0c09bac
@Armster15
Armster15 / AccessibleButton.tsx
Last active May 8, 2022 22:53
An unstyled React button with accessibility!
import React, { useState } from 'react';
import { useFocusVisibleListener } from '@react-aria/interactions';
import type { ButtonProps as HTMLButtonProps } from 'react-html-props';
export interface AccessibleButtonProps extends HTMLButtonProps {
/**
* Whether the button should lose it's focus when the mouse
* is released
* @default false
*/