Skip to content

Instantly share code, notes, and snippets.

View comment.js
/*! Streak launches new features to users every day. Users love our fast updates and quick response to bugs.
* In order to accomplish this we use the popular InboxSDK library ( Its used by
* several large organizations:
* Dropbox (
* HubSpot (
* Stripe (
* Giphy (
* Clearbit (
* The use of the library is similar to using other popular javascript libraries like jQuery and Underscore
View content.js
/* this file is the "app" file that loads the sdk and brings up the iframe */
function log() {
console.log.apply(console, ['iframe-test'].concat(;
InboxSDK.load(1, 'iframe-test').then(function(sdk) {
sdk.Compose.registerComposeViewHandler(function(composeView) {
title: "iframe test",
omarstreak / Unquoted.js
Created Feb 1, 2016
Get unquoted text
View Unquoted.js
function extract(mv){
//NodeIterators are really cool:
var nodeIterator = document.createNodeIterator(
acceptNode: function(node){
//this is the main function where the interesting code occurs
//because node iterator is a recursive tree walk you'll see every node below the body element
//this includes nodes that contain both the html we want, and html we don't want
omarstreak / threadDataManager.js
Created Sep 10, 2015
Thread Data Manager example
View threadDataManager.js
import Kefir from 'kefir';
class ThreadDataManager {
constructor(){ => {this._emitter = emitter; return () => null});
this._threadData = {}; //map from threadID to thread data
setThreadData(threadID, data){
this._threadData[threadID] = data;
View inboxsdk-threadrowview-stream-example.js
var emitter; //variable name to hoist the emitter to
var stream ={
emitter = inEmitter;
return function(){}; //we need to return a function that gets called when the stream ends
threadRowView.addLabel(stream); //add the label passing in the stream
omarstreak / background.js
Last active May 28, 2021
Chrome API Extension
View background.js
//oauth2 auth
{'interactive': true},
//load Google's javascript client libraries
window.gapi_onload = authorize;
omarstreak /
Created Jan 18, 2013
Create and sign your safari extension file
EXTENSION=your extension name
$XAR -czf $EXTENSION.safariextz --distribution $EXTENSION.safariextension
$XAR --sign -f $EXTENSION.safariextz --digestinfo-to-sign digest.dat --sig-size `cat $BUILD_DIR/size.txt` --cert-loc $BUILD_DIR/cert.der --cert-loc $BUILD_DIR/cert01 --cert-loc $BUILD_DIR/cert02
openssl rsautl -sign -inkey $BUILD_DIR/key.pem -in digest.dat -out sig.dat
$XAR --inject-sig sig.dat -f $EXTENSION.safariextz
rm -f sig.dat digest.dat
omarstreak / Install XAR
Created Jan 18, 2013
Bash script to install XAR. Run as root and takes one command line argument where you want the xar executable to exist.
View Install XAR
if [ "`whoami`" != "root" ]; then
printf "Please run this script as root or using sudo\n"
exit 0
printf "Setting up XAR\n"
View gist:4076146
/* animation for even number of compose windows */
@-webkit-keyframes streakComposeTriggerEven {
from { clip: rect(1px, auto, auto, auto); }
to { clip: rect(0px, auto, auto, auto); }
.streakGmailComposeChildren:first-child:nth-last-child(2n) {
-webkit-animation-duration: 0.001s;
-webkit-animation-name: streakComposeTriggerEven;
omarstreak / table.html
Created Jul 9, 2012
Standard table structure
View table.html