Skip to content

Instantly share code, notes, and snippets.

View mb8z's full-sized avatar
🎯
Focusing

mb8z mb8z

🎯
Focusing
  • Freelance
  • Warsaw, Poland
View GitHub Profile
@mb8z
mb8z / am-emails-text-one-recipient.js
Last active March 3, 2021 17:24
Sending an email to one recipient
const { Emails } = require('automagically');
const send = async () => {
const email = Emails.send({
from: { email: '[email protected]', name: 'AwesomeApp' },
to: [{ email: '[email protected]', name: 'John Doe' }],
subject: 'Welcome',
text: 'Hey there, this is a test email!',
});
};
const automagically = require('automagically');
const testEmails = async () => {
const data = await automagically.emails.send({
to: '[email protected]',
from: '[email protected]',
body: 'Hello, world!',
});
console.log(data);
};
import Services from 'tripetto-services';
import { Export } from 'tripetto-runner-foundation';
import { run } from 'tripetto-runner-autoscroll';
const token = 'my-token-here';
const config = Services.init({ token });
// Picking params as spreaing the `config` does not work properly
const params = _.pick(config, ['definition', 'styles', 'l10n', 'locales', 'translations', 'attachments']);
const element = document.getElementById('my-tripetto-form');
run({
@mb8z
mb8z / setFavorites.py
Last active December 6, 2020 01:19
Python script for adding folders to favorites on macOS (.sfl and .sfl2 compatible)
# Example usage:
# NOTE: Please mind the trailing slashes at the end of the path names!!!
# Supports multiple files per attribute (pass them after a space - see `--add` example below:
# Examples:
# Adding: `python setFavorites.py --add file:///Users/your_username/your/path/ file:///Users/your_username/your/another_path/`
# Removing: `python setFavorites.py --remove file:///Users/your_username/your/path/`
#!/usr/bin/python
import os
import _ from 'lodash';
export default {
getItem: (key, defaultValue) => {
if (typeof localStorage === 'undefined') return null;
const value = localStorage.getItem(key);
return _.isNil(value) ? defaultValue : JSON.parse(value);
},
setItem: (key, data) => {
if (typeof localStorage === 'undefined') return null;
// Cache should work in a way that it takes into consideration:
// 1. Page number and page size
// 2. Applied filters
// Other assumptions:
// 1. It should be stored for up to 5 minutes - for quick access (TODO: TBD)
// 2. It should use localStorage
import _ from 'lodash';
import moment from 'moment';
import LS from '../../../utils/localStorage'; // Available here https://gist.github.com/Ancinek/86d2c136a04c010811d295fb2fb2deab
// Credit to https://github.com/yahoo/react-intl/issues/416#issuecomment-376088833
// This is a provider that should be a direct child of <IntlProvider> from 'react-intl'.
// Example of wrapping the code:
// <IntlProvider {...someConfigProps}>
// <GlobalIntlProvider>
// <AppLayout />
// </GlobalIntlProvider>
// </IntlProvider>
// I described my problem on https://stackoverflow.com/questions/52607886/react-requests-cancellation-on-page-change/52610800#52610800
// and worked my way through it
import _ from 'lodash';
import axios from 'axios';
// history should be imported from a file where it's created
import { history } from '../app/setup';
class RequestCancelation {
// Purposes:
// 1. For reseting a state on componentWillUnmount
// 2. For refetching data when :id in URL is changed
// It uses RequestCancellation from another gist file. More info here:
// https://stackoverflow.com/questions/52607886/react-requests-cancellation-on-page-change
import _ from 'lodash';
import { connect } from 'react-redux';
import { compose, lifecycle } from 'recompose';
import RequestCancelation from '../services/requestCancelation';
import React from 'react';
import { TweenOneGroup } from 'rc-tween-one';
const defaults = {
durations: {
in: 300,
out: 300,
width: 300,
},
easings: {