Skip to content

Instantly share code, notes, and snippets.

View rsoury's full-sized avatar
🍓
Foraging Berries

Ryan Soury rsoury

🍓
Foraging Berries
View GitHub Profile
@rsoury
rsoury / GetClosestBlockByTime.ts
Last active April 12, 2023 10:35
Get Closest EVM Block By Time
import { ethers } from 'ethers';
// Inspired by: https://medium.com/@hanyi.lol/how-to-get-a-block-number-by-timestamp-fefde4c69162
export async function getClosestBlockByTime(
timestamp: number,
provider: ethers.Provider
) {
let maxBlockNumber = await provider.getBlockNumber();
let minBlockNumber = 0;
const maxBlock = await provider.getBlock(maxBlockNumber);
@rsoury
rsoury / 3id-arweave-auth-provider.ts
Created May 21, 2022 14:15
CAIP10 Auth Provider for Arweave Wallets
import {
AuthProvider,
asOldCaipString,
getConsentMessage,
LinkProof
} from "@ceramicnetwork/blockchain-utils-linking";
import { AccountId } from "caip";
import * as uint8arrays from "uint8arrays";
export class ArweaveAuthProvider implements AuthProvider {
@rsoury
rsoury / env-plugin-manager.php
Created November 12, 2020 13:43
Environment based Plugin Activation for Wordpress Bedrock. Use as a mu-plugin.
<?php
/**
* @package env-plugin-manager
* @version 1.0
*
* Plugin Name: Environment Plugin Manager
* Description: This plugin manages the activation of other plugins based on the website's environment
* Version: 1.0
* Author: Ryan Soury | Web Doodle
@rsoury
rsoury / functions.php
Last active November 12, 2020 10:30 — forked from jchristopher/functions.php
Integrate Flatsome's live search with SearchWP
<?php
/**
* Standalone function used by Flatesome Search Filter
*
* @param string $search_query
* @param array $args
* @param array $defaults
* @return array
*/
const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const StyleLintPlugin = require("stylelint-webpack-plugin");
const FriendlyErrorsPlugin = require("friendly-errors-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const ImageminPlugin = require("imagemin-webpack-plugin").default;
const TerserPlugin = require("terser-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");
const { NODE_ENV: mode = "development" } = process.env;
@rsoury
rsoury / smart-react-frame-component.jsx
Last active February 7, 2020 01:34
React Frame Component + IFrame Resizer -- Resizing outside of React preventing re-rendering on resize. Good for wrapping providers (or wrapping an entire react app) in an IFrame to prevent style inheritance. Works with Create React App.
import React, { useEffect } from "react";
import Frame, { FrameContextConsumer } from "react-frame-component";
import { iframeResize } from "iframe-resizer";
import iFrameResizeContentWindowScript from "!raw-loader!iframe-resizer/js/iframeResizer.contentWindow.min.js"; // eslint-disable-line
const SmartFrame = ({ children, ...props }) => {
const ref = React.createRef();
// Component did mount
useEffect(() => {
@rsoury
rsoury / wordpress-db-shortcode.php
Created October 24, 2018 04:30
Wordpress shortcode to Access DB Items
function your_shortcode_function( $atts ){
// $atts in case you want to receive attributes
// This lets you set default results for attributes that aren't provided.
$attributes = shortcode_atts(array(
"text" => "some text",
"link" => "Some link"
), $atts);
@rsoury
rsoury / async-js-lib-load.js
Created December 5, 2017 01:15
Async JS Lib Load
(function(window, document){
var load = function(){
var script = document.createElement('script');
script.async = true;
script.type = 'text/javascript';
script.src = 'THE_SOURCE_OF_JS_LIB_HERE.js';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script, firstScript);
};
if(document.readyState === "complete"){
@rsoury
rsoury / ryan-sublime-bindings.json
Created September 4, 2017 01:03
Sublime Bindings
[
{ "keys": ["super+shift+o"], "command": "prompt_add_folder" },
{ "keys": ["/"], "command": "close_tag", "args": { "insert_slash": true }, "context":
[
{ "key": "selector", "operator": "equal", "operand": "(text.html, text.xml, meta.jsx.js) - string - comment", "match_all": true },
{ "key": "preceding_text", "operator": "regex_match", "operand": ".*<$", "match_all": true },
{ "key": "setting.auto_close_tags" }
]
},
{"keys": ["alt+shift+f"], "command": "reindent", "args": {"single_line": false}}
@rsoury
rsoury / getVideoId.js
Last active April 2, 2017 14:45
Get Video Id - Youtube, Vimeo, Vine, VideoPress
/**
* Get the vimeo id.
* @param {string} str - the url from which you want to extract the id
* @returns {string|undefined}
*/
function vimeo(str) {
if (str.indexOf('#') > -1) {
str = str.split('#')[0];
}
var id;