Skip to content

Instantly share code, notes, and snippets.

@iskenxan
iskenxan / requestInventory2.js
Created May 10, 2021 00:50
refactor for right reasons
requestInventory = (inventoryItems) => {
const [first] = inventoryItems;
inventoryItems = inventoryItems.slice(1);
return { first, inventoryItems };
};
@iskenxan
iskenxan / requestInventory.js
Created May 10, 2021 00:49
refactoring for right reasons
requestInventory = () => {
const [first] = this.inventoryItems;
this.inventoryItems = this.inventoryItems.slice(1);
return first;
};
@iskenxan
iskenxan / decomposition2.js
Last active May 31, 2021 13:47
refactoring for right reasons
processInventory = (widget) => {
displayLoader();
switch (this.action) {
case "REQUEST": {
return this.requestInventory();
}
case "CLEAR": {
return this.clearInventory();
}
case "ADD": {
@iskenxan
iskenxan / decomposition.js
Last active May 31, 2021 13:46
refactoring for right reasons
import { displayLoader } from "./loader";
export default class InventoryManager {
inventoryItems = [];
action;
processInventory = (widget) => {
displayLoader();
switch (this.action) {
case "REQUEST": {
@iskenxan
iskenxan / shareState.js
Created April 27, 2021 00:40
React and RxJS shareState
import { useState, useEffect } from "react";
import { BehaviorSubject } from "rxjs";
const subjects = {};
export const NOTES_STATE = "NOTES_STATE";
function getNewSubject(initValue) {
return new BehaviorSubject(initValue);
}
@iskenxan
iskenxan / Content.js
Created April 27, 2021 00:39
React and RxJS Content
import { useSharedNotes } from "./notesState";
import "./styles.css";
export default function Content() {
const { notes } = useSharedNotes();
return (
<div className="content">
{notes.map((note, index) => (
<p key={index}>{note}</p>
))}
@iskenxan
iskenxan / Header.js
Created April 27, 2021 00:38
React and RxJS Header
import { useState } from "react";
import { useSharedNotes } from "./notesState";
export default function Header() {
const [value, setValue] = useState("");
const { addNote, clear } = useSharedNotes();
const handleChange = (e) => {
setValue(e.target.value);
};
@iskenxan
iskenxan / notesState.js
Created April 27, 2021 00:37
React and RxJS notesState
import { useState, useEffect } from "react";
import { BehaviorSubject } from "rxjs";
let subject = null;
export const getNotes = () => {
if (!subject) {
return undefined;
}
@iskenxan
iskenxan / CCDottedSample.js
Created April 5, 2021 00:08
CCDottedSample
<Dropdown text="File">
<Dropdown.Menu>
<Dropdown.Item text="New" />
<Dropdown.Item text="Open..." description="ctrl + o" />
<Dropdown.Item text="Save as..." description="ctrl + s" />
</Dropdown.Menu>
</Dropdown>
@iskenxan
iskenxan / AccordionPanelAndHeaderContext.js
Created April 5, 2021 00:02
AccordionPanelAndHeaderContext
const useAccordionContext = () => useContext(AccordionContext);
const AccordionHeaderContainer = styled.div`
padding: 8px 16px;
background: #f5f5f5;
border-top: 1px solid #d3d3d3;
cursor: pointer;
`;
const AccordionPanelContainer = styled.div<{ height: string; padding: string }>`