Skip to content

Instantly share code, notes, and snippets.

function Home() {
const { language, setLanguage } = useContext(UserLanguageContext);
const [selectedLanguage, setSelectedLanguage] = useState(language);
const onLanguageChange = (e) => {
const l = e.target.value;
setSelectedLanguage(l);
I18n.setLanguage(l);
setLanguage(l);
const defaultLanguage = () => {
const languageFromStorage = localStorage.getItem("lang");
if (languageFromStorage) {
I18n.setLanguage(languageFromStorage);
return languageFromStorage;
} else {
const detectedLang = navigator.languages
? navigator.languages[0]
: navigator.language || navigator.userLanguage;
let adaptLang = detectedLang.slice(0, 2);
@enricop89
enricop89 / context.js
Created November 4, 2022 07:52
userLanguageContext.js
import { createContext } from "react";
const UserLanguageContext = createContext({
language: "en",
setLanguage: () => {},
});
export default UserLanguageContext;
@enricop89
enricop89 / About.js
Created November 4, 2022 07:25
Localize App.js
import { I18n } from "aws-amplify";
import { Link } from "react-router-dom";
function About() {
return (
<section id="aboutSection">
<p>{I18n.get("aboutTitle")}</p>
<p>
Go to <Link to="/">Home</Link>
</p>
@enricop89
enricop89 / readme.md
Last active July 31, 2022 14:45
Dynamo DB Circuit Breaker item
PK SK Event Type TTL
enricoapi 1659278245 httperror 1659278245
enricoapi 1659628245 httperror 1659628245
awesomeapi 16412278245 httperror 16412278245
enricoapi 1659278666 httperror 1659278666
@enricop89
enricop89 / index.js
Created July 15, 2022 13:24
Use audioLevelUpdated
import _ from "lodash";
const speakingThreshold = 1000;
const notSpeakingThreshold = 2000;
const audioStream = {
isTalking: false,
timestamp: 0,
};
const onAudioLevel = function(event, elementId) {
@enricop89
enricop89 / dynamodb.js
Created October 9, 2021 09:24
GSI Query Example
function findBookByGenreAndYear({genre, startYear, endYear}) {
var params = {
ExpressionAttributeValues: {
":genre": {"S": genre},
":startYear": {"N": startYear},
":endYear": {"N": endYear},
},
ExpressionAttributesNames:{
"#genre": "Genre",
"#y": "Year",
@enricop89
enricop89 / usePublisher.js
Created September 14, 2021 14:16
Example of React Hooks with Opentok/client
import React, { useCallback, useRef, useState } from "react";
import OT from "@opentok/client";
export function usePublisher() {
const [isPublishing, setIsPublishing] = useState(false);
const [pubInitialised, setPubInitialised] = useState(false);
const publisherRef = useRef();
const streamCreatedListener = React.useCallback(({ stream }) => {}, []);
let publisher;
const handleError = (e) => console.log(e);
const startScreenShareWithAudio = async () => {
let stream;
try {
stream = await navigator.mediaDevices.getDisplayMedia({video: true, audio: true});
} catch (e) {
handleError(e);
}
if (stream) {
@enricop89
enricop89 / app.js
Created February 3, 2021 09:31
Screensharing with audio from Mic
const publish = Promise.all([
OT.getUserMedia({
videoSource: 'screen'
}),
OT.getUserMedia({
videoSource: null
})
])
.then(([screenStream, micStream]) => {
return OT.initPublisher(null, {