Issue With Clicks Inside Mousedown

I have multiple buttons that can be clicked by mousedown/touchstart, after 2 seconds, you get a popup to make sure, and you can click “yes” or “no”.

The issue comes when you click one, then select “no” and click another one. When logging the “data-id”, the first one clicked is the one passed, instead of the clicked one.

I thought this was an event.preventDefault(), event.stopImmediatePropagation issue, but this is not helping me at all, I don’t know what else to try anymore or know WHY this is happening.

Here’s a preview of the JS file:

$('.btn').on('mousedown touchstart', function (e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    let button = $(this);
    console.log('Before setTimeOut: ', button.attr('data-treatment-id'));
    
    timer = setTimeout(async function() {
    $('#make-sure-location').show();
    
    $('#not-in').on('click', function(e) {
      console.log('not in location: ', button.attr('data-treatment-id'));
      e.preventDefault();
      e.stopImmediatePropagation();
      $('#make-sure-location').hide();
      clearTimeout();
    });

    $('#inside').on('click', function(e) {
      console.log('on location: ', button.attr('data-treatment-id'));
      e.preventDefault();
      e.stopImmediatePropagation();
    });
    
  }, 2000)
})

Here’s a working fddle:
https://jsfiddle.net/rj8ofLym/28/

To recreate issue:

  1. MouseDown first button
  2. Click “No” on div.
  3. Check logs (correct “data-id”)
  4. MouseDown second button
  5. Click “No” on div.
  6. Check logs (INcorrect “data-id” – still first one)

push (redirect) to a route after successful login

Till now I was redirecting to the User Dashboard from the React component, but I want to apply a different approach, I want to redirect after getting the success response from the saga itself.

For this, I have attempted to use redux-first-history (which comes with the support of react-router6) I have followed their documentation, almost everything is working but an action @@router/CALL_HISTORY_METHOD getting called twice.

Here are my routes

export default function App() {
  return (
    <AuthProvider>
      <Router history={history}>
        <Routes>
          <Route element={<Layout />}>
            <Route path="/" element={<PublicPage />} />
            <Route path="/login" element={<LoginPage />} />
            <Route
              path="/protected"
              element={
                <RequireAuth>
                  <ProtectedPage />
                </RequireAuth>
              }
            />
          </Route>
        </Routes>
      </Router>
    </AuthProvider>
  );
}

which goes across the project, below is my store.

import { applyMiddleware, compose, createStore } from "redux";
import { persistReducer, persistStore } from "redux-persist";
import storage from "redux-persist/lib/storage";
import createSagaMiddleware from "redux-saga";
import rootReducer from "../store/reducers";
import { watchAuth } from "../store/sagas/index";
import { createReduxHistoryContext } from "redux-first-history";
import { createBrowserHistory } from "history";

const composeEnhancers =
  process.env.NODE_ENV === "development"
    ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
    : null || compose;

const { createReduxHistory, routerMiddleware } = createReduxHistoryContext({
  history: createBrowserHistory(),
  oldLocationChangePayload: true,
  showHistoryAction: true,
});
const sagaMiddleware = createSagaMiddleware();
const middleware = [sagaMiddleware, routerMiddleware];
const persistConfig = {
  key: "root",
  storage,
  whitelist: ["auth"],
};

const persistedReducer = persistReducer(persistConfig, rootReducer);

export const store = createStore(
  persistedReducer,
  composeEnhancers(applyMiddleware(...middleware)),
);
const persistor = persistStore(store);
sagaMiddleware.run(watchAuth);

export const history = createReduxHistory(store);
export default store;
export { persistor };

and my Saga

import { call, delay, put } from "redux-saga/effects";
import axios from "../../../config/axios";
import {
  authFail,
  authStart,
  authSuccess,
  checkAuthTimeout,
  logout,
  logoutSucceed,
  setAlert,
} from "../../actions/auth/auth";
import { LOGIN_API } from "../../apiCollecitions";
import { push } from "redux-first-history";

export function* authLoginSaga(action) {
  yield put(authStart());

  const authData = {
    email: action.email,
    password: action.password,
  };
  try {
    const response = yield axios.post(
      `${LOGIN_API}?lng=${localStorage.getItem("i18nextLng")}&active=true`,
      authData,
    );
    yield localStorage.setItem("token", response.data.token);
    yield localStorage.setItem("expirationDate", expirationDate);
    yield put(authSuccess(response.data.token));
    yield put(push("/protected")); //should redirect to the specified route
  } catch (error) {
    yield put(authFail(error.response.data.message));
  }
}

I have also set up a sample GitHub repo for the same, for your reference.

NUXT JS insert Array inside Array and display forEach

Good afternoon everyone!

I’m stuck since 3 days searching answers in forums and here also, and i can’t solve it.. Maybe you can help about this problem:

In javascript is easier, but in NUXT we can’t insert Javascript where we wan’t..

In the component page:

<script>
  async fetch() {
      this.ArraySkills= await fetch(`https://api.test/player/${id}`
      ).then((res) => res.json ())
      
    },
    data () {
      return {
        ArraySkills: []
      }
    }
</script>

This url is a test. But it’s return an array about skills of player 1. I already display the skills of this player.

But i need to display the forEach players, their skills (40 players).

I created an ArraySkills. And i would like to visit the url1, url2, url3 etc.. And to push() inside the ArraySkills

In pure JS i would done :

let id=1
while (id<41) {
 id++;
  async fetch() {
      this.ArraySkill= await fetch(`https://api.test/player/${id}`
      ).then((res) => res.json ())

    },

   ArraySkills.push(ArraySkill);

}
#And then he will fill the ArraySkills with the 40 players

But in Nuxt it's seems harder :/

React Native Components Do Not Recognize Taps

I have just recently switched to React navigation v6 in my RN app and I can’t seem to understand why my Button(s) and Touchable(s) do not recognize onPress function the second time they are being pushed.

The scenario:

  1. I launch Home Screen.
  2. Press go to test screen button. The console prints the message.
  3. On Test Screen press go back. The console prints the message. I go back.
  4. Back on the Home Screen the button doesn’t work anymore. Console does not print the message

Home.tsx

<View style={{ flex: 1, paddingTop: 30 }}>
      <Button
        title='go to test screen'
        onPress={() => {
          console.log('pressed to test');
          navigate(TEST_SCREEN);
        }}
      />
</View>

TestScreen.tsx

<View style={{flex: 1, paddingTop: 30}}>
   <Button
     title='go back'
     onPress={() => {
       console.log('pressed go back');
       goBack();
     }}
   />
</View>

navigate func:

export function navigate(name: string, params?: any | undefined) {
  if (navigationRef.isReady()) {
    navigationRef.navigate(name, params);
  }
}

navigator:


const Home = createStackNavigator();

export default function HomeNavigator(): JSX.Element {
  return (
    <Home.Navigator
      initialRouteName={HOME_SCREEN}
      screenOptions={{ headerShown: false }}
    >
      <Home.Screen name={HOME_SCREEN} component={HomeScreen} />
      <Home.Screen name={TEST_SCREEN} component={TestScreen} />
    </Home.Navigator>
  );
}

routes:

export const HOME_SCREEN = 'Home';
export const TEST_SCREEN = 'Test';

Using HTMLCanvas element how to draw line with specific condition in Vuejs?

var example1 = new Vue({
  el: '#example-1',
  data: {
    questions: [{
        id: '1',
        message: '1',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '2',
        message: '2',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '3',
        message: '3',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '4',
        message: '4',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '5',
        message: '5',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '6',
        message: '6',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '7',
        message: '7',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
    ],
    answers: [{
        id: '1',
        message: '1',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '2',
        message: '11',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '3',
        message: '3',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '4',
        message: '2',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '5',
        message: '5',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '6',
        message: '2',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '7',
        message: '4',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '8',
        message: '5',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '9',
        message: '4',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
      {
        id: '10',
        message: '4',
        checked: false,
        statuses: ['match', 'closeTo', 'veryfar']
      },
    ]
  },
  methods: {

  }
})
.example-1 {
  float: left;
}

.example-2 {
  float: right;
  margin-top: -144px;
}

.container {
  padding: 20px;
}

.container2 {
  width: calc(100% - 105px);
  padding: 8px 0;
  height: 30px;
  box-sizing: border-box;
}

.h-line {
  height: 1px;
  margin-bottom: 18px;
  width: 100%;
  background-color: black;
}
<div class="container">
  <div id="example-1">
    <div v-for="que in questions" :key="que.id" :que="que">
      <input type="checkbox" v-model="que.checked" /> {{ que.message }}
    </div>



    <div class="example-2">
      <div v-for="ans in answers" :key="ans.id" :ans="ans">
        <input type="checkbox" v-model="ans.checked" /> {{ ans.message }}

      </div>
    </div>

Logic I am trying to achieve :- https://stackblitz.com/edit/vue-laepf5

Using above provided logic in “stackblitz”. I am trying to write logic into two components and achieve the same functionality. During that process, i am facing multiple issues like,

[Vue warn]: Error in v-on handler: “TypeError: fromEl.getBoundingClientRect is not a function”
TypeError: fromEl.getBoundingClientRect is not a function

Codesandbox link, Where trying to split logic in two components.

https://codesandbox.io/s/laughing-star-5w2bq?file=/src/components/One.vue

javascript donwload image not working as expected

I have an image that was readed to javascript.

I used sublime text to see the image and it is like this:

enter image description here

I readed this image and generate javscript arrayBuffer of Uint8Array

Inside this arrayBuffer, i see also ffd8 ffe0 like in photo above.

Now, i need to downlaod it to local machine, i used

 var blob1 = new Blob([byteArray], {type: 'application/octet-stream'});
                var fileName1 = "cool.bin";
                function saveAs(blob, fileName) {

    var url = window.URL.createObjectURL(blob);
    var anchorElem = document.createElement("a");
    anchorElem.href = url;
    anchorElem.download = fileName;
    anchorElem.style = 'display: none';

    document.body.appendChild(anchorElem);
    anchorElem.click();

    document.body.removeChild(anchorElem);

    // On Edge, revokeObjectURL should be called only after
    // a.click() has completed, atleast on EdgeHTML 15.15048
    setTimeout(function() {
        window.URL.revokeObjectURL(url);
    }, 1000);
}

After i downlaoded this image from javascript,
I see in sublime text diffrent bytes

enter image description here

What worng with my javascript donwload code ?

Google Places Autocomplete API error, “google is not defined”

I am scaffolding a simple prototype using google places and maps api using Vue.

In index.html, I added the script tag, libraries, and api key, I get 200 response in the network tab.

        <script src="https://maps.googleapis.com/maps/api/js?key=My-api-key&libraries=places" async defer></script>

In App.vue, I added the following

 <input ref="autocomplete" type="text" />
 ...
<script>
  export default {
  name: "App",
  data() {
   return {
     autocomplete: "",
    };
  },
  methods: {},
  mounted() {
    const center = { lat: 40.84498856765032, lng: -73.71060855293794 };
    // Create a bounding box with sides ~10km away from the center point
    const defaultBounds = {
    north: center.lat + 0.1,
    south: center.lat - 0.1,
    east: center.lng + 0.1,
    west: center.lng - 0.1,
  };
  const originAutoComplete = google.maps.places.AutoComplete(
    this.$refs["autocomplete"],
   {
     bounds: defaultBounds,
   }
 );
 originAutoComplete.addListener("place_changed", () => {
   console.log(originAutoComplete.getPlace());
 });

enter image description here

How do I resolve this error? Is there a way to initialize this in App.vue script tag? The example google developers youtube works great, but I’d like to implement this in a Vue context.
One other note, I tried adding window before the .google, no dice.

My object in javascript not returning the wanted value

I can’t seem to figure out how to do the object part, I need to make it calculate the age dynamically. I’ve written most of the stuff here and it works fine the only down side is my dynamic age calculation, I don’t know what I’m doing wrong and can’t find my mistake.

<html>
    <head>
        <title>WEB PROGRAMIRANJE</title>
    </head>
    <body>
        <script type="text/javascript">
        var niza=new Array (9,8,7,6,5,4,3,2,1);
        var izbrisani=niza.shift();
        var izbrisanip=niza.pop();
        var sortirani=niza.sort();
       // form an arrey delete first and last:
       // sort the arrey:
        document.write(sortirani);  

        function babati(a,b,c)
        {
            var total;
            total=(a+b+c)/3;
            alert(total);
        }
        document.write("<br>");
        </script>
                <input type="button" value="Call" onClick="babati(0,5,10)";>
                <script type="text/javascript">
                document.write("<br>");
                var ucenik=new Object();
        // giving them value to object elements:
        ucenik.ime="Name";
        ucenik.prezime="Surname";
        ucenik.godina=2021;
        ucenik.roden=2003;
        // printing the object elements:
        document.write(ucenik.ime);
        document.write("<br>");
        document.write(ucenik.prezime);
        document.write("<br>");
        document.write(ucenik.roden);
        document.write("<br>");
        // The function:
        // This will calculate the age dinamicly This year - Birth year:
        ucenik.vozrast=function()
        {
            this.godina - this.roden;   
        }
        ucenik.vozrast();
        document.write(ucenik.vozrast);
         //This line above prints the dynamic age:
        </script>
    </body>
</html>

Can someone please change this from python into javascript for me? [closed]

import urllib2
import json
import random
import webbrowser

songsbytemp= {
   'scorching':
      {
      'ss-collie':
         {
         'url':    'https://www.youtube.com/watch?v=TLcmtBA-W_s',
         'title':  'Collie Man',
         'artist': 'Slightly Stoopid',
         'mood':   'happy',
         'tempo':  'andante'
         },
      'beck-loser':
         {
         'url':    'https://www.youtube.com/watch?v=YgSPaXgAdzE',
         'title':  'Loser',
         'artist': 'Beck',
         'mood':   'happy',
         'tempo':  'allegro'
         }
      }, #end of scorching
   'hot':
      {
      'ween-voodoo':
         {
         'url':    'https://www.youtube.com/watch?v=sRCRi8qfKu0',
         'artist': 'Ween',
         'title':  'Voodoo Lady',
         'mood':   'getdown',
         'genre':  'rock',
         'tempo':   'andante'
         },
       'ween-voodoo':
         {
         'url':    'https://www.youtube.com/watch?v=sRCRi8qfKu0',
         'artist': 'Ween',
         'title':  'Voodoo Lady',
         'mood':   'getdown',
         'genre':  'rock',
         'tempo':   'andante'
         }
      }, #end of hot
   'nice':
      {
      'al-weneedhelp':
         {
         'url':    'https://www.youtube.com/watch?v=d93_iILNji8',
         'artist': 'The Album Leaf',
         'title':  'We Need Help',
         'mood':   'sad',
         'genre':  'rock',
         'tempo':   'andante'
         },
      'am-when the sun goes down':
         {
         'url':    'ww.youtube.com/watch?v=d93_iILNji8',
         'artist': 'The Arctic Monkeys',
         'title':  'When the Sun Goes Down',
         'mood':   'sad',
         'genre':  'rock',
         'tempo':   'andante'
         }
      }, #end of warm
   'lukewarm':
      {
      'bb-drytherain':
         {
         'url':    'https://www.youtube.com/watch?v=wsbR2dEmHGc',
         'title':  'Dry the Rain',
         'artist': 'Beta Band',
         'mood':   'happy',
         'genre':  'indie',
         'tempo':   'andante'
         },
      'bb-castars':
         {
         'url':    'https://www.youtube.com/watch?v=gxzMbAMO73k',
         'title':  'California Stars',
         'artist': 'Billy Brag and Wilco',
         'mood':   'happy',
         'genre':  'americana',
         'tempo':   'andante'
         }
      }, #end of lukewarmm
   'frigid':
      {
      'es-bars':
         {
         'url':    'http://www.youtube.com/watch?v=zH8-lQ9CeyI',
         'title':  'Between the Bars',
         'artist': 'eliott smith',
         'mood':   'sad',
         'genre':  'rock',
         'tempo':   'andante'
         },
      'so-mag':
         {
         'url':     'https://www.youtube.com/watch?v=q0IeGx5-gsk',
         'title':   'Hold On Magnolia',
         'artist':  'Songs: Ohia',
         'mood':    'sad',
         'genre':   'indie',
         'tempo':   'lento'
         }
      }, # end of cold
   'freezing':
      {
      'so-lion':
         {
         'url':    'http://www.youtube.com/watch?v=zH8-lQ9CeyI',
         'title':  'Between the Bars',
         'artist': 'eliott smith',
         'mood':   'sad',
         'genre':  'rock',
         'tempo':   'andante'
         },
      'rh-lotus':
         {
         'url':    'https://www.youtube.com/watch?v=cfOa1a8hYP8',
         'title':  'Lotus Flower',
         'artist': 'Radiohead',
         'mood':   'sad',
         'genre':  'rock',
         'tempo':   'lento'
         },
      'so-mag':
         {        
         'url':     'https://www.youtube.com/watch?v=wxAaf16xXRk',
         'title':   'Lioness',
         'artist':  'Songs: Ohia',
         'mood':    'sad',
         'tempo':   'lento',
         }
      } # end of freezeing
  
   } # end of temp ranges         

#pull api from wunderground                                                                                                                                                                          

def gettemp():
   f = urllib2.urlopen('http://api.wunderground.com/api/e7fa1fe6de662dfd/geolookup/conditions/q/CA/San_Francisco.json')
   json_string = f.read()
   parsed_json = json.loads(json_string)
   location = parsed_json['location']['city']
   temp_f = parsed_json['current_observation']['temp_f']
   print "Current temperature in %s is: %s" % (location, temp_f)
   f.close()
   return temp_f

def getsongurl(temprange):
   songs=songsbytemp[temprange]
   mysong=random.choice(songs.keys())

   for key in songs[mysong]:
      print key,
      print songs[mysong][key]


   url=songs[mysong]['url']
   print 'url =', url
   return url


        #get the current temp                                                                                                                                                                                
temp=gettemp()

# Chose a song from the proper temp range                                                                                                                                                            
if temp > 90:
   print "above 90 and scorching"
   url=getsongurl('scorching')
elif temp > 82:
   print 'over 82, less than 90, and hot'
   url=getsongurl('hot') 
elif temp > 72:
   print "over 72, less than 82, and nice"
   url=getsongurl('nice')
elif temp > 65:
   print "over 65, under 72, and lukewarm"
   url=getsongirl('lukewarm')
elif temp > 55:
   print "over 55, under 65, and frigid"
   url=getsongurl('frigid')
elif temp > 45:
   print "over 45, under 55, and cold!"
   url=getsongurl('freezing')
else:
   print "Just go back to bed.  It's too cold to be alive"


# Play it!                                                                                                                                                                                           
webbrowser.open_new(url)

I need to be able to have a background music for my weather app that I am making in javascript. I I am not familiar with python and I wanted to see if anyone can translate it for me. It would be kindly appreciated. It is the only weather based music api that I have come across after researching for some time now.

A Grid slowing the moving element on JS canvas

I’m drawing a grid on a JavaScript canvas on this canvas I also have a moving element so the Grid can be on/off with a button all is well apart from the speed of the moving element when grid is on it becomes extremely slow. I’m not really sure where am I going wrong. Can someone please give me some help. Thank you

HTML

<div>
    <input type=button id="up" onClick=move_img(id); value='Up'>
    <input type=button id="down"  onClick=move_img(id); value='Down'>
    <input type=button id="left"  onClick=move_img(id); value='Left'>
    <input type=button id="right"  onClick=move_img(id); value='Right'>
    <input type=button id="stop"  onClick=move_img(id); value='Stop'>
    <input type=button id="grid"  onClick=gridOn(); value='Grid'>
    <br>
    <p></p>
</div>

JavaScript

    var isGrid = new Boolean(false);
    var canvas = document.getElementById("canvas");
    b = canvas.getContext("2d");

    var width = canvas.width = 600;
    var height = canvas.height = 400;
    
    document.body.appendChild(canvas);

    b.fillStyle = "#F0F8FF";
    b.fillRect(0, 0, canvas.width, canvas.height);

    var posX = 10;
    posY = 10;
    x = 0;
    y = 0;
    
    setInterval(function () {
   
        b.fillStyle = "#F0F8FF";
        b.fillRect(0, 0, width, height);
        posX += x;
        posY += y;

        if (posX > width - 20) {
            x = 0;
            posX = width - 20;
        }
        if (posX < 0) {
            x = 0;
            posX = 0;
        }
        if (posY > height - 20) {
            y = 0;
            posY = height - 20;
        }
        if (posY < 0) {
            y = 0;
            posY = 0;
        }

    b.fillStyle = "red";
    b.fillRect(posX, posY, 20, 20);
    
    /**  Grid ***/
    if(isGrid){
        drawGrid();
    }
    /**************/
    
    }, 5)
   
    function move_img(id) {
        switch (id) {
        case "down":
            moveDown();
            break;
        case "up":
            moveUp();
            break;
        case "left":
            moveLeft();
            break;
        case "right":
            moveRight();
            break;
        case "stop":
            moveStop();
            break;
        }
    } 
    
    function moveDown(){
        x = 0;
        y = 1;
    }
    function moveUp(){
        x = 0;
        y = -1;
    }
    function moveLeft(){
        x = -1;
        y = 0;
    }
    function moveRight(){
        x = 1;
        y = 0;
    }
    function moveStop(){
        x = 0;
        y = 0;
    }
    function gridOn() {
        if(isGrid){
            isGrid = false;
        }else{
            isGrid = true;
        }
    } 
    
    function drawGrid(){    
        b.strokeStyle = 'black';
        b.lineWidth = 0.5;
        
        for(i = 0; i<= 600; i=i+40){
            b.moveTo(i, 0);
            b.lineTo(i, 600);
            b.stroke();
        }
        for(j = 0; j<= 600; j=j+40){
            b.moveTo(0, j);
            b.lineTo(600, j);
            b.stroke();
        }
    }

Скрипт меняет имя отправителя на “[email protected]”. Но получатель получает письмо без аватарки (иконки). Как разрешить проблему? [closed]

Функция отправляет  письмо клиенту, заполнившему форму, на указанный в форме Email.

`function sendEmailToClient() {

Текущая Гугл Таблица записана в переменную:

var ss= SpreadsheetApp.getActiveSpreadsheet ();

Лист текущей таблицы с именем "Ответы на форму (1)", в который загружаются ответы из формы, записан в переменную:

var listAnswers = ss.getSheetByName (“Ответы на форму (1)”);

Получен email клиента из ячейки с адресом: последняя строка, 4 ряд, – и записан в переменную:

var clientEmail = listAnswers.getRange (listAnswers.getLastRow (),2).getValue ();

  var body =  "Здравствуйте!</br>"+


  "Благодарю за заказ!</br>"+


  "В ближайшее время я с Вами свяжусь.";


Отправлено письмо клиенту (отправителем будет тот, кто запускает скрипт):


Для отправки используется функция sendEmail, метод класса MailApp


  MailApp.sendEmail(clientEmail, "Ваша заявка получена", "",{


  htmlBody:body,


  name: "[email protected]"


  }); 

}`

Receiving encoded JSON response from API call

I’m sending a POST request to a REST API endpoint, and am receiving JSON response back filled with question mark diamonds and other unicode characters. But when I test API on Postman, I am correctly receiving JSON response. Here is my code for calling API:

xhr.open(method,url);
xhr.setRequestHeader("Authorization", "Bearer" + " " + accessToken);
xhr.setRequestHeader("Content-Type", "application/json");

xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {
     console.log(xhr.status);
     console.log(xhr.responseText);
  }};
xhr.send(JSON.stringify(data));

The response I’m getting is like this: ��}�r�8���|ʧj���t���<Pe3�H���8�灖(��2�!��=S]�?䜟�_r��I�”

Read and store content of file React Native

I know this is probably one of the dumbest question but i can’t seem to find the solution, I simply want to read the content of a file and store it in a variable without using any external library. How do we do that in React Native ? Thank you.

if you need more info about what i’m exactly trying to do: I want to store this SVG file’s content to return it in a component, and using ” import Bla from “./bla.svg” ” is working on android and ios only and not web (I’m using expo) and i know that returning the content of the svg (ex: <svg … /> ) works on web.

How do I confirm user permission for mediaDevices correctly?

It’s safe to say the snippet below will error any-time there’s a problem but between all browsers, that DOMExecution is a different response. I could go ahead and collect them all and be compliant this way but are there other ways?

This is what I use to soft-check:

try {
  await navigator.mediaDevices.getUserMedia({
    audio: true,
    video: true
  });
} catch (e) {
  Message.receive.public(`Media Error: ${e.message}.`);
}

I would return and call it quits if there’s a catch, but during media-selection there’s possibly 1 out of many devices in use and that will throw an error and with my app that won’t matter they can try the device any ways to see if it produces or not.