Skip to content

Instantly share code, notes, and snippets.

View pketh's full-sized avatar
🐢
https://kinopio.club

Pirijan pketh

🐢
https://kinopio.club
View GitHub Profile
@pketh
pketh / asciiputsonglasses
Created September 10, 2020 14:30 — forked from staringispolite/asciiputsonglasses
Ascii art sunglasses meme
Puts on glasses:
(•_•)
( •_•)>⌐■-■
(⌐■_■)
Takes off glasses ("mother of god..."):
(⌐■_■)
( •_•)>⌐■-■
ʕ●ᴥ●ʔノ*:・
@pketh
pketh / kinopio-markdown-userscript.js
Last active January 3, 2021 04:08 — forked from danreeves/kinopio-markdown-userscript.js
kinopio.club markdown userscript
// ==UserScript==
// @name Kinopio Markdown
// @namespace https://kinopio.club/kinopio-markdown-userscript-Q9qnmvXEPaagLx5Ufytlx
// @version 0.1
// @description convert text in cards to markdown
// @author Pirijan (forked from dnrvs)
// @match https://kinopio.club/kinopio-markdown-userscript-Q9qnmvXEPaagLx5Ufytlx
// @grant none
// ==/UserScript==
ᵔᴥᵔ
// group cards into overlap groups
self.onmessage = function (event) {
const offset = 10
const { cards, viewport, zoom } = event.data
let newCards = cards.filter(card => isCardInViewport(card, viewport, zoom))
newCards = newCards.map(card => {
return {
id: card.id,
name: card.name,
groupIntoBatches (array) {
const batchSize = 100
const totalBatches = Math.ceil(array.length / batchSize)
let batches = []
_.times(totalBatches, (index) => {
const start = index * batchSize
let end = (index + 1) * batchSize
const batch = array.slice(start, end)
batches.push(batch)
})
async bulletin ({subject, users, exploreSpaces}) {
const batches = utils.groupIntoBatches(users)
console.log('📧 bulletin', { subject, users: users.length, batches: batches.length })
for (const users of batches) {
const templates = users.map(user => {
return {
From: "[email protected]",
To: user.email,
TemplateAlias: "bulletin",
MessageStream: "bulletins",
@pketh
pketh / sendEmailBatchWithTemplates.js
Created October 25, 2022 15:49
wrapped in try catch to log errors
try {
await postmark.sendEmailBatchWithTemplates(templates)
} catch (error) {
console.error('🚒 email.bulletin', error)
}
[
{
"name": "Ascension Island",
"emoji": "🇦🇨",
"unicode": "U+1F1E6 U+1F1E8",
"image": "https://cdn.jsdelivr.net/npm/[email protected]/dist/images/AC.svg"
},
{
"name": "Andorra",
"emoji": "🇦🇩",
@pketh
pketh / BlankDialogTemplate.vue
Created October 8, 2023 14:20
vue 3 composition template
<script setup>
import { reactive, computed, onMounted, defineProps, defineEmits, watch, ref, nextTick } from 'vue'
import { useStore } from 'vuex'
const store = useStore()
import utils from '@/utils.js'
const dialog = ref(null)
onMounted(() => {