Skip to content

Instantly share code, notes, and snippets.

View paul-phan's full-sized avatar
🌏
Working from home

Minh Phan (Paul) paul-phan

🌏
Working from home
View GitHub Profile
@paul-phan
paul-phan / instructions.md
Created April 23, 2024 05:21 — forked from DakotaLMartinez/instructions.md
Adding an SSH key to GitHub (Mac OS X or Linux)

You need to do this if you try this command:

ssh -T git@github.com

and you get something that says

git@github.com: Permission denied (public key).
import React, { useId, useState } from 'react'
export function NoHydrate({
getHTML,
...rest
}: { getHTML?: () => string } & JSX.IntrinsicElements['div']) {
let id = useId()
let [html] = useState(() => {
if (typeof document === 'undefined') {
return getHTML?.() ?? ''
@paul-phan
paul-phan / m1-setup-dev.sh
Last active February 18, 2022 08:41
Setup bootstrap for my Mac M1
#!/usr/bin/env bash
## You might need to make the script executable by run the following command mannually:
# sudo chmod +x ./m1-setup-dev.sh
sudo -v
# Keep-alive: update existing `sudo` time stamp until the script has finished.
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
# Install if we don't have it
@paul-phan
paul-phan / custom-shopify-auth.ts
Last active October 7, 2021 09:56
Custom Shopify Auth
export function safeCompare(
strA: string | Record<string, string> | string[] | number[],
strB: string | Record<string, string> | string[] | number[]
): boolean {
if (typeof strA === typeof strB) {
let buffA: Buffer
let buffB: Buffer
if (typeof strA === 'object' && typeof strB === 'object') {
{"access_token":"BQD9EqTgpaAIu6Pud6N2HrSvUtpDgGIND8nWuJALLPpzbfT_NczTHtt2Uf--lr-svUWaPAXDmviqu5_6VhTr5r1d7hby_DVaArR3dH4bCbpeT8L7vAgMgP18h-fAcs2ugYfeCdejlZOdZHQMnJpuBdmygfUcSFzESzbGqNaT_hA__sGR","token_type":"Bearer","expires_in":3600,"refresh_token":"AQBpsyuYicL3lPMAFW2D8XujlZZdbPhdbTsuQPVWRrYxlDJXy5nIF3MMUH9xP87DO77q-Tr9OhPwcSV05OhO0ZvLsazr4AZgnmqSkjkMAK7MiNx18aMuI3EGOHylhBdjsvQ","scope":"user-read-currently-playing user-top-read"}
import React, {CSSProperties, ReactElement, RefObject, useEffect, useRef, useState} from 'react'
import ReactDOM from 'react-dom'
import styled, {StyleSheetManager} from 'styled-components'
interface ISandboxProps {
style?: CSSProperties
children: ReactElement
getRef?: (ref: RefObject<TODO>) => void
src: string
@paul-phan
paul-phan / pagefly-atc-shopify.js
Last active July 5, 2022 09:18
pagefly-atc-shopify.js
// nathan theme
try {
setTimeout(function() {
window.__pagefly_helper_store__ &&
window.__pagefly_helper_store__.subscribe(function(c) {
$.get("/cart?view=json", function(data, status) {
/*optional stuff to do after success */
$(".widget_shopping_cart_content").html(data);
}).always(function() {
var subtotal = parseFloat(
@paul-phan
paul-phan / rotten.js
Created October 14, 2018 07:11
rotten movies
const CORS_PROXY_URL = "https://cors-anywhere.herokuapp.com";
async function responseAsDOM(response) {
const text = await response.text();
const parser = new DOMParser();
return parser.parseFromString(text, "text/html");
}
async function readBodyAndDecode(response) {
const buffer = await response.arrayBuffer();
@paul-phan
paul-phan / facebook-plane-react.js
Last active August 1, 2018 03:09
Facebook Plane Reaction - paste to console
var hookFacebookReactionsCounter=0;function hookFacebookReactions(){var b='update-feedback',d=[{name:'fire',id:14},{name:'plane',id:15}];if(window.requireLazy){window.requireLazy(['UFICentralUpdates','UFIFeedbackTargets'],function(l){l.subscribe(b,function(o,p){var q=p.feedbacktarget.supportedreactions;if(q.length===6){for(var r=d.reverse(),s=Array.isArray(r),t=0,r=s?r:r[Symbol.iterator]();;){var u;if(s){if(t>=r.length)break;u=r[t++]}else{if(t=r.next(),t.done)break;u=t.value}var v=u;q.push(v.id)}p.feedbacktarget.supportedreactions=q,l.inform(b,p)}})});for(var e='',f=d,g=Array.isArray(f),h=0,f=g?f:f[Symbol.iterator]();;){var i;if(g){if(h>=f.length)break;i=f[h++]}else{if(h=f.next(),h.done)break;i=h.value}var k=i;e+='div[data-reaction=\''+k.id+'\'] div._4sm1:after { content: \' '+k.name+'\'; }'}var j=document.createElement('style');j.type='text/css',j.textContent=e,(document.head||document.body||document.documentElement).appendChild(j)}else console.log('Failed to inject Facebook Reactions hook.'),hookFacebookRea
@paul-phan
paul-phan / react-16.4-draft-wysiwyg.js
Last active December 10, 2021 11:57
React 16.4 controlled input sync with react-draft-wysiwyg => changed using lifting state up.
import React from 'react'
import { Editor as DraftEditor } from 'react-draft-wysiwyg'
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';
import { ContentState, convertToRaw, EditorState } from 'draft-js'
import draftToHtml from 'draftjs-to-html'
import htmlToDraft from 'html-to-draftjs'
import PropTypes from 'prop-types'
class Editor extends React.Component {
static propTypes = {