React-native: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.62.* [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓] рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдкрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  263рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдХреГрдкрдпрд╛ рдорд╛рдВрдЧреА рдЧрдИ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдЬреЛ рдореБрджреНрджреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд░реБрдХрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╡рд┐рд╡рд░рдг

0.61.4 рд╕реЗ 0.62.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдРрдк рдЕрдм рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЕрдиреНрдп рд╕рднреА рдЕрдиреБрд░реЛрдз рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ)

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╕рдВрд╕реНрдХрд░рдг:

0.62.0

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  1. CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдпрд╛ ReactNative рдРрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
  2. рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдПрдХ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
  3. fetch . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
import Picker from "react-native-image-picker"
import {request, PERMISSIONS, RESULTS} from 'react-native-permissions';

class App extends React.Component {

  async componentDidMount() {

    try {
      await request(PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE)
      await Picker.launchImageLibrary({noData: true}, async (file) => {
        try {
           const body = new FormData()
           body.append("file", { type: file.type, size: file.fileSize, uri: `file://${file.path}`, name: file.fileName })
           const headers = { "content-type": "multipart/form-data", "accept": "application/json" }

          const req = await fetch("ANY_SERVER/upload/image", {
            method: "POST",
            headers,
            body
          })
          console.log(req.status)
        }  catch (e) {
          console.log(e)
        }
      })
    } catch (e) {
      console.log(e)
    }
  }

  render(){
    return <View/>
  }
}

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕реНрдиреИрдХ, рдХреЛрдб рдЙрджрд╛рд╣рд░рдг, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рдпрд╛ рдХрд┐рд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рд▓рд┐рдВрдХ:

https://snack.expo.io/01W!bybf_
[Mon Apr 06 2020 21:29:18.704] LOG [TypeError: Network request failed]

Flipper React Native Team Attention Android

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="8">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/**/ReactNativeFlipper.java

рд╕рднреА 263 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ!

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ !! рдореИрдВ рдкрд┐рдЫрд▓реЗ 2 рджрд┐рдиреЛрдВ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдБ! рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдЦреЛрдЬрд╛ ..

рдЖрдкрдХреЛ рдЗрд╕ uesCleartextTraffic="true" рдХреЛ dir _android/app/src/main/AndroidManifest.xml_ рдХреЗ рдЕрдВрджрд░ рдорд┐рд▓реА AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛

    <application
      ...
      android:usesCleartextTraffic="true">

рдбреЙрдХреНрд╕ . рдХреЗ рдЕрдиреБрд╕рд╛рд░

рдЬрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ "рдЧрд▓рдд" рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдФрд░ FTP рд╕реНрдЯреИрдХ, рдбрд╛рдЙрдирд▓реЛрдбрдореИрдиреЗрдЬрд░, рдФрд░ рдореАрдбрд┐рдпрд╛рдкреНрд▓реЗрдпрд░) рдХреНрд▓рд┐рдпрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдк рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдВрдЧреЗред рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рднреА рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓реАрдпрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░реИрдлрд┐рдХ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдЧреЛрдкрдиреАрдпрддрд╛, рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдФрд░ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХрдореА рд╣реИ; рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╣рдорд▓рд╛рд╡рд░ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдкрд░ рдирдЬрд░ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдкрддрд╛ рд▓рдЧрд╛рдП рдЙрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЗрд╕ uesCleartextTraffic = "true" рдХреЛ AndroidManifest рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, dir android/app/src/main рдХреЗ рдЕрдВрджрд░ рдорд┐рд▓реА xml рдлрд╝рд╛рдЗрд▓

    <application
      ...
      android:usesCleartextTraffic="true">

рдбреЙрдХреНрд╕ . рдХреЗ рдЕрдиреБрд╕рд╛рд░

рдЬрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ "рдЧрд▓рдд" рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдФрд░ FTP рд╕реНрдЯреИрдХ, рдбрд╛рдЙрдирд▓реЛрдбрдореИрдиреЗрдЬрд░, рдФрд░ рдореАрдбрд┐рдпрд╛рдкреНрд▓реЗрдпрд░) рдХреНрд▓рд┐рдпрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдк рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдВрдЧреЗред рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рднреА рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓реАрдпрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░реИрдлрд┐рдХ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдЧреЛрдкрдиреАрдпрддрд╛, рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдФрд░ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХрдореА рд╣реИ; рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╣рдорд▓рд╛рд╡рд░ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдкрд░ рдирдЬрд░ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдкрддрд╛ рд▓рдЧрд╛рдП рдЙрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд▓реА рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдХрд┐рд╕реА http рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ https рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред 0.62 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред
рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред

рдЕрдиреНрдп рд╕рднреА рдЕрдиреБрд░реЛрдз рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЕрдиреНрдп рд╕рднреА рдЕрдиреБрд░реЛрдз рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдРрдк рдмрдирд╛рдпрд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рддрдм рднреА рдореБрдЭреЗ 0.62 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рддрдХ 0.61.5 рдкрд░ рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЧрдпрд╛: /

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЖрд░рдПрди 0.62.0 рдФрд░ 0.62.1 рдХреЗ рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ: Network request filed ред
рдЫрд╡рд┐ рдкреЛрд╕реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдореИрдВ 0.61.5 рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЧрдпрд╛ :( рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ 0.61.5 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЕрдкрдЧреНрд░реЗрдб-рд╣реЗрд▓реНрдкрд░ рджреЗрдЦреЗрдВред

рдпрд╣рд╛рдБ рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ!

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рдСрдЯреЛ/рдлрд╛рд╕реНрдЯ рд░реАрд▓реЛрдб рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реИ рдЬреЛ рдХреБрдЫ рдлреНрд▓рд┐рдкрд░ рд╕рдВрдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ ..

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд▓реЙрдЧрдХреИрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ .. рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдореЗрдВ рднреА рдХреБрдЫ рджрд┐рди рдмрд┐рддрд╛рдП рд╣реИрдВ, рдлрд┐рд░ рднреА рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="8">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/**/ReactNativeFlipper.java

@abumostafa рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдХ рдирдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдЪреЗрддрд╛рд╡рдиреА:рдЕрдиреБрдкрд▓рдмреНрдз рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг
:рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╢реНрд░реЛрдд:рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдПрдХ рд╕реНрдиреИрдХ рдпрд╛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдиреНрдпреВрдирддрдо, рдкреВрд░реНрдг рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗред
рдЪреЗрддрд╛рд╡рдиреА:рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
:рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╢реНрд░реЛрдд:рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ, рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд░рд╣рддреА рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рд╣рдо рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВред

@abumostafa рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдХ рдирдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдпрд╣ рдЕрднреА рднреА рдирд╡реАрдирддрдо рддрд╛рдЬрд╝рд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ 0.62.1 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ

@abumostafa рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдХ рдирдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдпрд╣ рдЕрднреА рднреА рдирд╡реАрдирддрдо рддрд╛рдЬрд╝рд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ 0.62.1 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ

@рд╕рдлрд╛рдИрдпреЗрд╣
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдпрд╣ рдЕрднреА рднреА рдирд╡реАрдирддрдо рддрд╛рдЬрд╝рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдЯреЗрдореНрдкрд▓реЗрдЯ 0.62.1 рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдЕрднреА рднреА 0.62.2 рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ Android рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ

@abumostafa

*рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ *

"рдЖрд░рдПрди-рдлрд╝реЗрдЪ-рдмреНрд▓реЙрдм" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

````
"RN-fetch-blob" рд╕реЗ RNFetchBlob рдЖрдпрд╛рдд рдХрд░реЗрдВ;

RNFetchBlob.fetch ('рдкреЛрд╕реНрдЯ',, {
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди',
'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ/рдлреЙрд░реНрдо-рдбреЗрдЯрд╛',}, [
{рдирд╛рдо: 'рдкреНрд░реЛрдлрд╛рдЗрд▓рдЗрдореЗрдЬ', рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо: this.state.filePath.fileName, рдбреЗрдЯрд╛: RNFetchBlob.wrap(this.state.filePath.uri)},
{рдирд╛рдо: 'рдпреВрдЖрдИрдбреА', рдбреЗрдЯрд╛: рдпреВрдЖрдИрдбреА},
{рдирд╛рдо: 'рдбреЙрдм', рдбреЗрдЯрд╛: this.state.fDOB},
{рдирд╛рдо: 'рдлрд╝реЛрдирдирдВрдмрд░', рдбреЗрдЯрд╛: this.state.pnumber},
{рдирд╛рдо: 'рдкрддрд╛', рдбреЗрдЯрд╛: this.state.address},
{рдирд╛рдо: 'рд▓рд┐рдВрдЧ', рдбреЗрдЯрд╛: this.state.isgender},
{рдирд╛рдо: 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо', рдбреЗрдЯрд╛: this.state.fulname}
// рдХрд╕реНрдЯрдо рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░
]).рдлрд┐рд░ ((рд░реЗрд╕) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд░реЗрд╕)
ResponseHelper.success ('рдЕрдкрдбреЗрдЯреЗрдб');
this.setState({isstarting:false})
})
рдХреИрдЪ ((рдЧрд▓рддреА) => {
this.setState({isstarting:false})
ResponseHelper.success ('рд╕рд░реНрд╡рд░ рд╕рдорд╕реНрдпрд╛ рдХреГрдкрдпрд╛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ');
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдЧрд▓рддреА', рддреНрд░реБрдЯрд┐);
})
````

рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛

RNFetchBlob.wrap

рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди RNFetchBlob.wrap рдлрд╝рд╛рдЗрд▓ рдХреЛ base64 $ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдзрдиреНрдпрд╡рд╛рдж @abumostafa рдЗрд╕ рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░рд╛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдпрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рддреНрд░реБрдЯрд┐ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рдЧрдИ рд╣реИред рд╡реИрд╕реЗ рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдЯреАрдо рдХреЛ рдкрд┐рдВрдЧ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдпрд╣рд╛рдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: https://github.com/facebook/flipper/issues/993

рдореИрдВрдиреЗ @abumostafa рдФрд░ @alfianwahid рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА; рдореИрдВрдиреЗ 0.61.5 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛; рдореИрдВрдиреЗ рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ); рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 0.62.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВрдиреЗ @abumostafa рдФрд░ @alfianwahid рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА; рдореИрдВрдиреЗ 0.61.5 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛; рдореИрдВрдиреЗ рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ); рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 0.62.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ??

@abumostafa рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, yarn.lock , ./gradlew clean рдФрд░ ./gradlew cleanBuildCache рдХрдорд╛рдВрдб рдЪрд▓рд╛рдП рдФрд░ npx react-native run-android рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ред

рдореИрдВ рдЗрд╕ рд╕рдордп рдЖрд░рдПрди 0.61.4 рдФрд░ рдЕрдХреНрд╖ 0.19.2 рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред initializeFlipper(this); cleanBuildCache рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА Network Error рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред

Android рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ рдФрд░ ReactNativeFlipper.java рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬреЗрдВ рдФрд░
рд▓рд╛рдЗрди рдирдВрдмрд░ 43 . рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ
//builder.addNetworkInterceptor(рдирдпрд╛ FlipperOkhttpInterceptor(networkFlipperPlugin));

android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ android рдлреЛрд▓реНрдбрд░ рд╣реИ
рдЕрдЧрд░ рдЖрдкрдиреЗ рдРрдк рдлреЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╕рд░реНрдЪ рдХрд┐рдпрд╛ рд╣реИ

RNFetchBlob.wrap

рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди RNFetchBlob.wrap рдлрд╝рд╛рдЗрд▓ рдХреЛ base64 $ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ?

https://github.com/joltup/rn-fetch-blob/wiki/Fetch-API#class -rnfetchblob

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed") рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ $#$1 TypeError: Network request failed fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed") рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдбрд┐рдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬ рджреЛрдиреЛрдВ рдореЗрдВ, рдФрд░ рд░рд┐рдореЛрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рджреЛрдиреЛрдВред
android:usesCleartextTraffic="true" рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА (рд▓реЗрдХрд┐рди рдпрд╣ рд╡реИрд╕реЗ рднреА рдЧреИрд░-рдПрд╕рдПрд╕рдПрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ)ред
рдЖрд░рдПрди 0.62.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд▓рд╛рдиреЗ https://jsonplaceholder.typicode.com/todos/1 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдХреБрдЫ рд╕рд╛рдЗрдЯреЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рдирд╣реАрдВ ?!

рдЕрджреНрдпрддрди, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рдпрд╣ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрдирдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреЛрд╕реНрдЯрдореИрди рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди" рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЕрдереЙрд░рд┐рдЯреА рдлреЛрди рдХреА рд▓рд┐рд╕реНрдЯ рдореЗрдВ рди рд╣реЛ?

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд▓рдбрд╝рддреЗ рд╣реБрдП рдмрд╕ рдЖрдЦрд┐рд░реА рджрд┐рди рдмрд┐рддрд╛рдпрд╛ред рдореЗрд░реЗ рдкреВрд░реНрдг рдкрде рдХреЛ "рдлрд╝рд╛рдЗрд▓: //" рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЖрдк рддреАрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВ / рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрде:

file:///data/data/com.fake/cache/file-name.jpeg

рдореЗрд░реЗ рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

fetch(url, {
  method: "POST",
  body: {
    uri: 'file://' + file.absolutePath,
    type: file.type,
    name: file.name,
  },
  headers: headers,
  credentials: "include",
})

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ @^0.62.2 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдХреНрдпрд╛ рдлрд┐рдХреНрд╕ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╣рдо рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ?

рдЕрднреА рднреА рдЗрд╕реЗ 0.62.2 рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред
рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="10">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдЕрднреА рднреА 0.62.2 рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ Android рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдЗрд╕рд╕реЗ рдЖрдЬ рдореЗрд░рд╛ рдХрд╛рдо рдмрди рдЧрдпрд╛! рдЖрд░рдПрди 0.62.0 рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдлреНрд▓рд┐рдкрд░ рдиреЗ рдПрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдирд╡реАрдирддрдо рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ https://github.com/facebook/flipper/issues/993#issuecomment -619823916 рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдЧрд╛?

$#$1 fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed") #$ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЙрд╕ рдирдП рдлреНрд▓рд┐рдкрд░ 0.39.0 рдХреЗ рд╕рд╛рде рдЕрднреА рднреА Network request failed рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рднрд▓реЗ рд╣реА рдпрд╣ рдХреНрд░реЛрдо/рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕/рд╕рдлрд╛рд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред

@antoinerousseau рдЖрдк рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдХрд╣рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ ... рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

@aprilmintacpineda рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп https://github.com/facebook/react-native/issues/26939 рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛, рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдлреНрд▓рд┐рдкрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ?

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28
gradle {.line-numbers} 25 android.enableJetifier=true 26 27 # Version of flipper SDK to use with React Native 28 FLIPPER_VERSION=0.41.0 //upgrade to latest flipper
рджреЗрдЦреЛ :
https://github.com/facebook/flipper/issues/993#issuecomment -619823916

рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 0.61.4 . рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА

рдзрдиреНрдпрд╡рд╛рдж @alfianwahid
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реА рднреА рдорджрдж рдХреА

@abumostafa , рдзрдиреНрдпрд╡рд╛рдж рднрд╛рдИ, рдЬрд┐рд╕рдиреЗ рдореЗрд░реА 48 рдШрдВрдЯреЗ рдХреА рдЦреЛрдЬ рдмрдЪрд╛рдИ

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд╣рд╛рдп рд╕рдм рд▓реЛрдЧ, рдореИрдВрдиреЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдФрд░ рдлрд╝реЗрдЪ рдХреЗ рд╕рд╛рде рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рднреА рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рд╣реБрдЖред рдпрджрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдЕрдкрдиреЗ POST рдЕрдиреБрд░реЛрдз рдХреЛ XMLHttpRequest рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рдСрдЯреЛ/рдлрд╛рд╕реНрдЯ рд░реАрд▓реЛрдб рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реИ рдЬреЛ рдХреБрдЫ рдлреНрд▓рд┐рдкрд░ рд╕рдВрдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ ..

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд▓реЙрдЧрдХреИрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ .. рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдореЗрдВ рднреА рдХреБрдЫ рджрд┐рди рдмрд┐рддрд╛рдП рд╣реИрдВ, рдлрд┐рд░ рднреА рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ ? @trglairnarra

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЖрд░рдПрди 0.62.0 рдФрд░ 0.62.1 рдХреЗ рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ: Network request filed ред
рдЫрд╡рд┐ рдкреЛрд╕реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ ? рдореЗрд░рд╛ рдРрдк рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдб рдореЛрдб рдореЗрдВ рдирд╣реАрдВ

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдЖрдкрдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :) рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдЕрднреА рднреА 62.2 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

  1. android:usesCleartextTraffic="true" => рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрд░реЗ рдЕрдиреНрдп рд╕рднреА рдПрдкреАрдЖрдИ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ HTTP рднреА рд╣реИред
  2. рдЯрд┐рдкреНрдкрдгреА рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ 43
  3. "рдлрд╝рд╛рдЗрд▓: //" рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, => рдЫрд╡рд┐ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рднреА, рд╣рдо рд╕рд┐рд░реНрдл рдЬрд╕рди рдлреЙрд░реНрдордбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдЕрднреА рднреА 62.2 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

  1. android:usesCleartextTraffic="true" => рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрд░реЗ рдЕрдиреНрдп рд╕рднреА рдПрдкреАрдЖрдИ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ HTTP рднреА рд╣реИред
  2. рдЯрд┐рдкреНрдкрдгреА рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ 43
  3. "рдлрд╝рд╛рдЗрд▓: //" рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, => рдЫрд╡рд┐ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рднреА, рд╣рдо рд╕рд┐рд░реНрдл рдЬрд╕рди рдлреЙрд░реНрдордбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред

@jamisonrachford XMLHttpRequest рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)

RN 0.62.2 рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ FLIPPER_VERSION=0.33.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ FLIPPER_VERSION=0.41.0 рдмрдирд╛рдиреЗ рд╕реЗ рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдВрд▓рдЧреНрди рдЫрд╡рд┐)ред рдХреНрдпрд╛ рдореБрдЭреЗ рдлрд╝реНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдХрджрдо рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
gradle issues

рдореИрдВ рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)

рдЗрддрдирд╛ рдЯрдХреНрд╕!

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)
рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдиреЗ рдореБрдЭреЗ рджреЛ рджрд┐рдиреЛрдВ рддрдХ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛

рдореИрдВ рдПрдХреНрд╕рдкреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рджрд┐рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдлрд▓рддрд╛ рдХрд╛ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХреНрд╕рдкреЛ рдореЗрдВ рдХреИрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ Hiti3 рдореИрдВ рднреА рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рднреА рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рдореИрдВ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдХреЛрдИ рдлреЙрд░реНрдордбреЗрдЯрд╛ рдирд╣реАрдВ) рднреЗрдЬрдирд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реИ:

рдкреНрд░рджрд░реНрд╢рдиреА
'рдПрдХреНрд╕рдкреЛ-рдЗрдореЗрдЬ-рдкрд┐рдХрд░' рд╕реЗ рдЗрдореЗрдЬрдкрд┐рдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ 'рдЖрдпрд╛рдд рдХрд░реЗрдВ';

// рдЫрд╡рд┐ рдкрд┐рдХрд░
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ async () => {
рдХреЙрдиреНрд╕реНрдЯ рдЕрдиреБрдорддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ImagePicker.requestCameraRollPermissionsAsync ();
рдЕрдЧрд░ (рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ === 'рдЭреВрдареА') рд╡рд╛рдкрд╕реА 'рдЕрд╕реНрд╡реАрдХрд╛рд░';
рдХреЙрдиреНрд╕реНрдЯ рд╡рд┐рдХрд▓реНрдк = {рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд╕рдВрдкрд╛рджрди: рд╕рддреНрдп, рдмреЗрд╕ 64: рд╕рддреНрдп};
const рдкрд░рд┐рдгрд╛рдо = ImagePicker.launchImageLibraryAsync (рд╡рд┐рдХрд▓реНрдк);
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо;
};
`

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
`
рд╕реНрдерд┐рд░рд╛рдВрдХ рддреЗрдЬ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рддреЗрдЬ');
Exports.uploadImage = async (req, res, next) => {
рдХрд╛рд╕реНрдЯ {рдЫрд╡рд┐} = req.body;
рдХрд╛рд╕реНрдЯ {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рдЗрдореЗрдЬ рдЯрд╛рдЗрдк,
рдирд╛рдо: рдЫрд╡рд┐ рдирд╛рдо,
рдмреЗрд╕ 64: рдЗрдореЗрдЬрдмреЗрд╕ 64,
рдкрде: рдЫрд╡рд┐рдкрде,
рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛,
} = рдЫрд╡рд┐;

рдХрд╛рд╕реНрдЯ рдмреЗрд╕ 64рдбреЗрдЯрд╛ = рдЗрдореЗрдЬрдмреЗрд╕ 64.рд░рд┐рдкреНрд▓реЗрд╕ ( data:image/${imageType};base64 , '');

var img = рдирдпрд╛ рдмрдлрд░ (рдмреЗрд╕ 64 рдбреЗрдЯрд╛, 'рдмреЗрд╕ 64');
рдХреЙрдиреНрд╕ рдкрде = __dirname + ./../../public/${imagePath}/${imageName} ;

рдЕрдЧрд░ (рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ) {
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рддреЗрдЬ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ (рдЖрдИрдПрдордЬреА)
рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ (500, 500)
.toFormat ('рдЬреЗрдкреАрдИрдЬреА')
рдЬреЗрдкреАрдИрдЬреА ({рдЧреБрдгрд╡рддреНрддрд╛: 90})
.toFile (рдкрде);
} рдкрдХрдбрд╝реЛ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐ рд▓рд┐рдЦреЗрдВ', рддреНрд░реБрдЯрд┐);
}
}
рдЕрдЧрд░ (! рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ) {
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рддреЗрдЬ (рдЖрдИрдПрдордЬреА) рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред рдЯреВрдлреЙрд░реНрдореЗрдЯ ('рдЬреЗрдкреАрдИрдЬреА')ред рдЬреЗрдкреАрдИрдЬреА ({рдЧреБрдгрд╡рддреНрддрд╛: 90})ред рдЯреВрдлрд╛рдЗрд▓ (рдкрде);
} рдкрдХрдбрд╝реЛ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐ рд▓рд┐рдЦреЗрдВ', рддреНрд░реБрдЯрд┐);
}
}
req.image = {рдЗрдореЗрдЬ рдЯрд╛рдЗрдк, рдЗрдореЗрдЬрдирд╛рдо, рдЗрдореЗрдЬрдкрд╛рде};
рдЕрдЧрд▓рд╛();
};
`

рдорджрдж рдХреА рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реАред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред

рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдмрд╕ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬрд╣рд╛рдЬ рдХреВрджреВрдВ рдФрд░ рд╢рд╛рдпрдж рдПрдХ рджрд┐рди рдЦреЛ рджреВрдВ, рдлрд┐рд░ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рдЬрд╛рдЗрдПред рдФрд░ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ рддреЛ рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

рдордВрдЧрд▓рд╡рд╛рд░, 19 рдордИ 2020, 21:44 рдХреЛ рдЧреБрд╕реНрддрд╛рд╡реЛ рд▓реЗрдЗрдЯ рд╕рд┐рд▓реНрд╡рд╛рдиреЛ, рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@Hiti3 https://github.com/Hiti3 рдореИрдВ рднреА рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рднреА
рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВред рдЕрдм рдореИрдВ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрдирд╛ рд╣реИ (рдирд╣реАрдВ
formData) рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдбрд┐рдХреЛрдб рдХрд░рдирд╛:

рдкреНрд░рджрд░реНрд╢рдиреА
'рдПрдХреНрд╕рдкреЛ-рдЗрдореЗрдЬ-рдкрд┐рдХрд░' рд╕реЗ рдЗрдореЗрдЬрдкрд┐рдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ 'рдЖрдпрд╛рдд рдХрд░реЗрдВ';

// рдЫрд╡рд┐ рдкрд┐рдХрд░
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ async () => {
рдХреЙрдиреНрд╕реНрдЯ рдЕрдиреБрдорддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ImagePicker.requestCameraRollPermissionsAsync ();
рдЕрдЧрд░ (рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ === 'рдЭреВрдареА') рд╡рд╛рдкрд╕реА 'рдЕрд╕реНрд╡реАрдХрд╛рд░';
рдХреЙрдиреНрд╕реНрдЯ рд╡рд┐рдХрд▓реНрдк = {рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд╕рдВрдкрд╛рджрди: рд╕рддреНрдп, рдмреЗрд╕ 64: рд╕рддреНрдп};
const рдкрд░рд┐рдгрд╛рдо = ImagePicker.launchImageLibraryAsync (рд╡рд┐рдХрд▓реНрдк);
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо;
};
`

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
`
рд╕реНрдерд┐рд░рд╛рдВрдХ рддреЗрдЬ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рддреЗрдЬ');
Exports.uploadImage = async (req, res, next) => {
рдХрд╛рд╕реНрдЯ {рдЫрд╡рд┐} = req.body;
рдХрд╛рд╕реНрдЯ {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рдЗрдореЗрдЬ рдЯрд╛рдЗрдк,
рдирд╛рдо: рдЫрд╡рд┐ рдирд╛рдо,
рдмреЗрд╕ 64: рдЗрдореЗрдЬрдмреЗрд╕ 64,
рдкрде: рдЫрд╡рд┐рдкрде,
рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛,
} = рдЫрд╡рд┐;

const base64Data = imageBase64.replace(data:image/${imageType};base64,
'');

var img = рдирдпрд╛ рдмрдлрд░ (рдмреЗрд╕ 64 рдбреЗрдЯрд╛, 'рдмреЗрд╕ 64');
const рдкрде = __dirname + ./../../public/${imagePath}/${imageName};

рдЕрдЧрд░ (рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ) {
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рддреЗрдЬ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ (рдЖрдИрдПрдордЬреА)
рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ (500, 500)
.toFormat ('рдЬреЗрдкреАрдИрдЬреА')
рдЬреЗрдкреАрдИрдЬреА ({рдЧреБрдгрд╡рддреНрддрд╛: 90})
.toFile (рдкрде);
} рдкрдХрдбрд╝реЛ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐ рд▓рд┐рдЦреЗрдВ', рддреНрд░реБрдЯрд┐);
}
}
рдЕрдЧрд░ (! рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ) {
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рддреЗрдЬ (рдЖрдИрдПрдордЬреА) рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред рдЯреВрдлреЙрд░реНрдореЗрдЯ ('рдЬреЗрдкреАрдИрдЬреА')ред рдЬреЗрдкреАрдИрдЬреА ({рдЧреБрдгрд╡рддреНрддрд╛: 90})ред рдЯреВрдлрд╛рдЗрд▓ (рдкрде);
} рдкрдХрдбрд╝реЛ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рддреНрд░реБрдЯрд┐ рд▓рд┐рдЦреЗрдВ', рддреНрд░реБрдЯрд┐);
}
}
req.image = {рдЗрдореЗрдЬ рдЯрд╛рдЗрдк, рдЗрдореЗрдЬрдирд╛рдо, рдЗрдореЗрдЬрдкрд╛рде};
рдЕрдЧрд▓рд╛();
};
`

рдорджрдж рдХреА рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реАред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react-native/issues/28551#issuecomment-631041471 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ACGFH2MSYJ2J5YDRASXISOTRSLOQFANCNFSM4MCRHIRA
.

0.41.0

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)

рдЗрддрдирд╛ рдЯрдХреНрд╕!

@Hiti3 рдмрд╕ рдЫрд╡рд┐ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡реАрдбрд┐рдпреЛ рднреА рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж @alfianwahid
рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
FLIPPER_VERSION=0.44.0

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рдереА, рдореИрдВрдиреЗ рд╣рд░ рдЪреАрдЬ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ 4-5 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдЕрдЯрдХрд╛ рд░рд╣рд╛, рдлрд┐рд░ рдореИрдВ RN-FETCH-BLOB рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ рдЖрдкрдХреЛ рдХрднреА рдкрдЫрддрд╛рд╡рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛

рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрднреА рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдпрд╣ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдореИрдВ рдЗрд╕рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рднреЗрдЬрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рд╣рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИред рдореИрдВ 0.62.2 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
Screen Shot 2020-05-31 at 6 40 53 PM

@tamangsuresh рдЕрд░реЗ рдпрд╛рд░, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд┐рдХреНрд╕ рдорд┐рд▓рд╛?

@Brianop рдирд╣реАрдВ рдпрд╛рд░

рдлреНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

рдЕрд░реЗ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛?, рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

рдЕрд░реЗ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ? , рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЖрдкрдХреЛ рдлреНрд▓рд┐рдкрд░ рдХреЛ рдирд╡реАрдирддрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛

@liyuewen рдореИрдВрдиреЗ рдЖрд░рдПрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдлреНрд▓рд┐рдкрд░ рдореЗрдВ рднреА рдлреНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВред

@liyuewen рдореЗрд░реЗ рдкрд╛рд╕ RN рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдФрд░ рдлрд╝реНрд▓рд┐рдкрд░ рднреА рд╣реИред рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдлрд▓рддрд╛ рдХреЗред

рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Android рдХреИрд╢реЗ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

@liyuewen рдореИрдВрдиреЗ рднреА рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)
рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдбреА: myProjectnode_modulesreact-nativetemplateandroidgradle.propertiesред рдореИрдВрдиреЗ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЧреНрд░реЗрдбрд▓ рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдФрд░ рдЕрдиреНрдп gradle.properties рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ /myProject/android/gradle.properties рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рд╕рд╛рде рд╣реА рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯрдореИрди рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреЛрд╕реНрдЯрдореИрди рдореЗрдВ рднреА рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ @abumostafa . рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдХреЛрдб рдкрд░ рднреА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ

@liyuewen рдореИрдВрдиреЗ рднреА рдпрд╣реА рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд┐рд╕реНрдордд рдХреЗред

рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА" рд╣реИ: "^ 0.62.2", рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ

Flipper рдХреЛ 0.45 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛

рдореИрдВ рдХрд╣реАрдВ рднреА рдлреНрд▓рд┐рдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ :(

рдореИрдВ рдХрд╣реАрдВ рднреА рдлреНрд▓рд┐рдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ :(

рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдпрд╣рд╛рдВ рднреА рдРрд╕рд╛ рд╣реА рд╣реИ .. рдпрд╣ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЕрдкрдбреЗрдЯ рд╣реИред рдореИрдВрдиреЗ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдПред Android рдореЗрдВ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]ред
рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрдХ рд╣реА рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЕрдкрдбреЗрдЯ рд╣реИред рдореИрдВрдиреЗ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдПред Android рдореЗрдВ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]ред
рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрдХ рд╣реА рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝реНрд▓рд┐рдкрд░ (рдпрд╣, getReactNativeHost ()ред getReactInstanceManager ());

MainApplication.java рдХрд╛рдо рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд░рд┐рд▓реАрдЬ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЕрдкрдбреЗрдЯ рд╣реИред рдореИрдВрдиреЗ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдПред Android рдореЗрдВ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]ред
рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрдХ рд╣реА рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝реНрд▓рд┐рдкрд░ (рдпрд╣, getReactNativeHost ()ред getReactInstanceManager ());

MainApplication.java рдХрд╛рдо рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд░рд┐рд▓реАрдЬ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдХрднреА рд░рд┐рд▓реАрдЬ рдмрд┐рд▓реНрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред рдореИрдВ рдЖрдЬ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ v59. рддреЛ, рдЬреЛ рд▓реЛрдЧ Flipper рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдпрд╣рд╛рдВ рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдРрдк рд╕реЗ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред рдЖрдИрдУрдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

RN 0.62.2, Flipper 0.46.0, рдПрдХ рдЗрдЬреЗрдХреНрдЯреЗрдб рдПрдХреНрд╕рдкреЛ рдРрдк рдкрд░ред

  // Turn the recording into a multipart form request with recording = the contents of our file.
  let fileUri = recording.getURI();
  if (!fileUri) {
    throw new Error('fileUri is null, it should always be initialized before reaching this point.');
  }

  let body = new FormData();
  body.append('recording', {
    uri: fileUri,
    name: 'voice-command.mp4',
    type: 'audio/mp4'
  });

  // Kick off the transcription job.
  var response;
  try {
    response = await fetch(
      'http://localhost:5000/api/v0/commands/transcription/start',
      {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
        },
        body,
      },
    );
  } catch (error) {
    console.error(error);
    throw error;
  }

рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓
http://localhost :8081/index.bundle?platform=ios&dev=true&minify= false:32085 :31
рдбрд┐рд╕реНрдкреИрдЪрдЗрд╡реЗрдВрдЯ @http :// рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ:8081/index.bundle?platform=ios&dev=true&minify=false :34645:31
setReadyState@http :// localhost:8081/index.bundle?platform=ios&dev=true&minify=false :33729:33
__didCompleteResponse@http : // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ:8081/index.bundle?platform=ios&dev=true&minify=false :33556:29
рдПрдорд┐рдЯ @http : // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ:8081/index.bundle?platform=ios&dev=true&minify=false :9744:42
__callFunction@http :// localhost:8081/index.bundle?platform=ios&dev=true&minify=false :5491:49
http://localhost :8081/index.bundle?platform=ios&dev=true&minify= false:5213 :31
__guard@http : // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ:8081/index.bundle?platform=ios&dev=true&minify=false :5445:15
callFunctionReturnFlushedQueue@http :// localhost:8081/index.bundle?platform=ios&dev=true&minify=false :5212:21
callFunctionReturnFlushedQueue@[рдореВрд▓ рдХреЛрдб]

Info.plist рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>localhost</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

рдореЗрд░рд╛ рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди:

{
  "name": "EstimateMobileApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "ios": "react-native run-ios",
    "android": "react-native run-android",
    "test": "jest"
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/native": "^5.4.2",
    "@react-navigation/stack": "^5.3.9",
    "@types/react-native-vector-icons": "^6.4.5",
    "expo": "^37.0.12",
    "expo-av": "^8.1.0",
    "react": "^16.11.0",
    "react-native": "^0.62.2",
    "react-native-gesture-handler": "^1.6.1",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-reanimated": "^1.8.0",
    "react-native-safe-area-context": "^1.0.2",
    "react-native-screens": "^2.7.0",
    "react-native-unimodules": "^0.9.1",
    "react-native-vector-icons": "^6.6.0",
    "tailwind-rn": "^1.1.0"
  },
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@babel/runtime": "^7.9.0",
    "@react-native-community/eslint-config": "^0.0.5",
    "@types/jest": "^25.2.3",
    "@types/react": "^16.9.35",
    "@types/react-native": "^0.62.10",
    "@types/react-test-renderer": "^16.9.2",
    "babel-jest": "^24.9.0",
    "eslint": "^6.5.1",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.58.0",
    "react-test-renderer": "16.11.0",
    "tailwindcss": "^1.4.6",
    "typescript": "^3.9.3"
  },
  "jest": {
    "preset": "react-native",
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-(native|universal|navigation)-(.*)|@react-native-community/(.*)|@react-navigation/(.*))"
    ]
  }
}

рдФрд░ рдореЗрд░рд╛ рдкреЙрдбрдлрд╛рдЗрд▓:

platform :ios, '10.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'

def flipper_pods()
  flipperkit_version = '0.46.0'
  pod 'FlipperKit', '~>' + flipperkit_version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitLayoutPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
  pod 'FlipperKit/SKIOSNetworkPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitUserDefaultsPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitReactPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
end

# Post Install processing for Flipper
def flipper_post_install(installer)
  file_name = Dir.glob("*.xcodeproj")[0]
  app_project = Xcodeproj::Project.open(file_name)
  app_project.native_targets.each do |target|
    target.build_configurations.each do |config|
      cflags = config.build_settings['OTHER_CFLAGS'] || '$(inherited) '
      unless cflags.include? '-DFB_SONARKIT_ENABLED=1'
        puts 'Adding -DFB_SONARKIT_ENABLED=1 in OTHER_CFLAGS...'
        cflags << '-DFB_SONARKIT_ENABLED=1'
      end
      config.build_settings['OTHER_CFLAGS'] = cflags
    end
    app_project.save
  end
  installer.pods_project.targets.each do |target|
    if target.name == 'YogaKit'
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.1'
      end
    end
  end
  installer.pods_project.save
end

target 'EstimateMobileApp' do
  # Pods for EstimateMobileApp
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  target 'EstimateMobileAppTests' do
    inherit! :complete
    # Pods for testing
  end

  use_native_modules!
  use_unimodules!

  flipper_pods()
  post_install do |installer|
    flipper_post_install(installer)
  end
end

target 'EstimateMobileApp-tvOS' do
  # Pods for EstimateMobileApp-tvOS

  target 'EstimateMobileApp-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end
end

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ v59. рддреЛ, рдЬреЛ рд▓реЛрдЧ Flipper рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк https url рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ v59. рддреЛ, рдЬреЛ рд▓реЛрдЧ Flipper рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк https url рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдБ, httpsред
рдХреНрдпрд╛ рдЖрд░рдПрди рдореЗрдВ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдореНрдмрд╛рдИ рдпрд╛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ RN рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ v59. рддреЛ, рдЬреЛ рд▓реЛрдЧ Flipper рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк https url рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдБ, httpsред
рдХреНрдпрд╛ рдЖрд░рдПрди рдореЗрдВ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдореНрдмрд╛рдИ рдпрд╛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ RN рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ

рдореБрдЭреЗ рдРрд╕реА рдХрд┐рд╕реА рд╕реАрдорд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рд╢рд░реАрд░ рд╕рдВрд░рдЪрдирд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

{
    "user_uuid":"9a137...",
    "contract_uuid":"881d9...",
    "files":[
        {"document_type_id":"20","document_type_title":"test1","private_flag":"0","file":{}},
        {"document_type_id":"21","document_type_title":"test2","private_flag":"1","file":{}},
        {"document_type_id":"22","document_type_title":"test3","private_flag":"1","file":{}}
    ]
}

рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ name , type , uri , size , рдЖрджрд┐ рдлрд╝реАрд▓реНрдб рд╣реИрдВред

const fileArrayToSend = await Promise.all(
            fileSelect.map(async (file, index) => {
                const documentTypeNum = Number(documentType[index]) || 0;

                return {
                    document_type_id: documentTypeNum,
                    document_type_title: customType ? customType[index] : null,
                    private_flag: isPrivate[index] ? 1 : 0,
                    file: {
                        name: file.name, 
                        type: file.type,
                        uri: file.uri, 
                        size: file.size
                    }
                };
            })
        );
let body = {
    contract_uuid: contract.uuid,
    user_uuid: userUUID
};

const formData = new FormData();
const appendToFormData = (formData, object) => {
    for (let [key, value] of Object.entries(object)) {
        if (value) {
            formData.append(key, value);
        }
    }
};
appendToFormData(formData, body);

fileArrayToSend.forEach((file, index) => {
    formData.append(`files[${index}]`, file, file.file.name);
});
let response = await Axios.post(`${config.apiEndpoint}/store_document_request_action`, formData, {
    headers: { 'Content-Type': 'multipart/form-data' }
});

image

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрд░рд╛ рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ "0.41.0" рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред
gradle.properities рдореЗрдВ
FLIPPER_VERSION=0.41.0

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрд░рд╛ рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ "0.41.0" рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред
gradle.properities рдореЗрдВ
FLIPPER_VERSION=0.41.0

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ gradle.properties рдХреЗ рдкрде рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, android рдореЗрдВ gradle.properties рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ gradle.properties рдПрдВрдбреНрд░реЙрдЗрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

@nharis7 рдпрд╣ /android/gradle.properties рдореЗрдВ рд╣реИ
Annotation 2020-06-12 210640
рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ? рдлреНрд▓рд┐рдкрд░ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реИред рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдИ рдлреНрд▓рд┐рдкрд░ рдирд╣реАрдВ рд╣реИред

@nharis7 рдпрд╣ /android/gradle.properties рдореЗрдВ рд╣реИ
Annotation 2020-06-12 210640
рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ? рдлреНрд▓рд┐рдкрд░ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реИред рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдИ рдлреНрд▓рд┐рдкрд░ рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ 0.62.2 рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдиреЗ /android/gradle.properties рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ 0.61 рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ рдЕрдм рдореИрдВ /android/gradle.properties рдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдЕрдкрдирд╛ рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рди рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛
https://github.com/axios/axios/issues/1567#issuecomment -518118223

рдлреНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ! (рдореИрдВ 0.46.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛)

рдореИрдВрдиреЗ рдКрдкрд░ рд╕реЗ рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА!
рдХреЗрд╡рд▓ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.46 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

image

"dependencies": {
    "@react-native-community/async-storage": "^1.11.0",
    "@react-native-community/cameraroll": "^1.7.2",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/drawer": "^5.8.1",
    "@react-navigation/material-bottom-tabs": "^5.2.9",
    "@react-navigation/native": "^5.5.0",
    "@react-navigation/stack": "^5.4.1",
    "axios": "^0.19.2",
    "mime-types": "^2.1.27",
    "path": "^0.12.7",
    "query-string": "^6.13.1",
    "react": "16.11.0",
    "react-native": "0.62.2",
    "react-native-animatable": "^1.3.3",
    "react-native-animate-loading-button": "^1.0.3",
    "react-native-gesture-handler": "^1.6.1",
    "react-native-image-picker": "^2.3.1",
    "react-native-image-resizer": "^1.2.3",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-paper": "^3.10.1",
    "react-native-reanimated": "^1.9.0",
    "react-native-safe-area-context": "^3.0.2",
    "react-native-screens": "^2.8.0",
    "react-native-swiper": "^1.6.0",
    "react-native-vector-icons": "^6.6.0"
  },

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Flipper рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

/yourproject/android/gradle.properties рд▓рд╛рдЗрди 28

25  android.enableJetifier=true  
26  
27  # Version of flipper SDK to use with React Native 
28  FLIPPER_VERSION=0.41.0  //upgrade to latest flipper

рджреЗрдЦреЛ :
рдлреЗрд╕рдмреБрдХ/рдлреНрд▓рд┐рдкрд░#993 (рдЯрд┐рдкреНрдкрдгреА)

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдИрдУрдПрд╕ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╡рд╛рд▓ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ :)

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

рдзрдиреНрдпрд╡рд╛рдж @alfianwahid

рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ 0.46.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ!

рдореЗрдВ
android\gradle.properties

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ 5 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдореИрдВ рд╣рд╛рд░ рдорд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдЬрдм рдореИрдВ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ред

рдЬрд┐рд╕ рдореБрджреНрджреЗ рдХрд╛ рдореИрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдкреЛ-рдЗрдореЗрдЬ-рдкрд┐рдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ NetworkError рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЗрд╕ рддрд░рд╣ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдореБрджреНрджреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрдореЗрдЬ-рдкрд┐рдХрд░ рд╕реЗ imageUri рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЗрди рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

const formData = new FormData();
formData.append('image', {
 uri : imageUri,
 type: "image",
 name: imageUri.split("/").pop()
});

рдкрд╣рд▓рд╛ рдореБрджреНрджрд╛ imageUri рдХреЗ рд╕рд╛рде рд╣реА рд╣реИред рдЕрдЧрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдлреЛрдЯреЛ рдкрде рд╣реИ /user/.../path/to/file.jpg ред рдлрд┐рд░ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрд┐рдХрд░ imageUri рдорд╛рди file:/user/.../path/to/file.jpg рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЧрд╛ рдЬрдмрдХрд┐ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрд┐рдХрд░ imageUri рдорд╛рди file:///user/.../path/to/file.jpg рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЧрд╛ред

рдкрд╣рд▓реЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди Android рдореЗрдВ formData рдореЗрдВ file: $ рдХреЗ рдмрдЬрд╛рдп file:// рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЙрдЪрд┐рдд рдорд╛рдЗрдо-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЖрдИрдУрдПрд╕ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдирд╣реАрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓-рдкрд┐рдХрд░ рдкреИрдХреЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ "рдЫрд╡рд┐" рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЙрдЪрд┐рдд рдорд╛рдЗрдо-рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди type рдХреНрд╖реЗрддреНрд░ рдореЗрдВ formData рдореЗрдВ рдЙрдЪрд┐рдд рдорд╛рдЗрдо-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг: .jpg рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдо-рдкреНрд░рдХрд╛рд░ image/jpeg рд╣реЛрдЧрд╛ рдФрд░ .png рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ image/png рд╣реЛрдЧреАред рд╣рдореЗрдВ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдорд╛рдЗрдо рдирд╛рдордХ рдПрдХ рдмрд╣реБрдд рдкреНрд░рд╕рд┐рджреНрдз npm рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ:

import mime from "mime";

const newImageUri =  "file:///" + imageUri.split("file:/").join("");

const formData = new FormData();
formData.append('image', {
 uri : newImageUri,
 type: mime.getType(newImageUri),
 name: newImageUri.split("/").pop()
});

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред :)

рдЬрдм рдЖрдкрдХреЛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рддреЛ рдЖрдкрдХреЛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмрд╣реБрдд рдЬрд╝рд░реВрд░реА рд╣реИред

android/gradle.properties
рдлреНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
FLIPPER_VERSION=0.41.0

рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рд╡реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдбреЗрдЯрд╛ рджреЗрдВ = рдирдпрд╛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ ();

data.append ('рдХрд╛рд░реНрд░рд╡рд╛рдИ', 'рдЬреЛрдбрд╝реЗрдВ');
рдбреЗрдЯрд╛.рдПрдкреЗрдВрдб ('рдкрд░рдо', 0);
рдбреЗрдЯрд╛.рдПрдкреЗрдВрдб ('рд╕реЗрдХрдВрдбрдкрд░рдо', 0);
data.append('file', new Blob([payload], {type: 'text/csv'}));

// рдпрд╣ рдХрд╛рдо
рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рджреЗрдВ = рдирдпрд╛ XMLHttpRequest ();
request.open ('рдкреЛрд╕реНрдЯ', рдпреВрдЖрд░рдПрд▓);
рдЕрдиреБрд░реЛрдзред рднреЗрдЬреЗрдВ (рдбреЗрдЯрд╛);

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (: +1: (: 100:

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрдкрдиреЗ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЬреЛ рдорд╛рд╣рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЕрдирдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рджрд░реНрдж рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рд╛ред

рддреЛ рдкреНрд░рд╢реНрди: рдХреНрдпрд╛ рдЗрд╕реЗ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛? рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛? рдХреНрдпрд╛ рдПрдХ рдмрдВрдж рдореБрджреНрджрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ?) рдЕрднреА рднреА рдЦреЛрдЬрдиреЗ рдпреЛрдЧреНрдп рд╣реИ? рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд▓рд┐рдВрдХ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд▓реЛрдЧ рдЬреНрдЮрд╛рдд рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рддреЗ рд░рд╣реЗрдВред

рдЬреИрд╕реЗ рд╣реА рдЕрдкрдЧреНрд░реЗрдб рднреВрдорд┐ - https://github.com/facebook/react-native/pull/29033 - рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд╣реЛрдиреЗ рддрдХ, рд╣рдо рдЗрд╕реЗ рдкрд┐рди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝реНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.46.0 . рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рд╣реИред рдХреЛрдИ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВ

  const imageUrl = 'http://febbler.com/20150425_114106.jpg';
    // if (true) {
    // const fileToUpload = res;
    const formData = new FormData();
    formData.append('name', 'Image Upload');
    formData.append('file_attachment', {
        uri: imageUrl,
        type: "image/jpeg",
        name: 'floral-spring-natural-landscape-wild-260nw-1274207287.jpg'
    });
    Axios({
        url: URL + '/VideosController/upload',
        method: 'POST',
        data: formData,
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'multipart/form-data'
        },
    }).then(
        response => {
            alert('res' + JSON.stringify(response.data));
        },
        error => {
            alert('check+ ' + error);
            console.warn(error);
        })
        .catch(error => {
            alert('No error' + error);
        });

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ ??

рдЕрдЧрд░ рдореИрдВрдиреЗ FLIPPER_VERSION = 0.41.0 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рд╡рд╣ рднреА рдирд╣реАрдВ рдЦреБрд▓ рд░рд╣рд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдорджрдж рдХрд░реЗ рдЬреЛ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк Microsoft рдХреА WAF (рд╡реЗрдм тАЛтАЛрдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдпрд░рд╡реЙрд▓) рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ; рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдЧ рд╣реИ (рдпрд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реЗ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ) рдЬреЛ рд╕рдорд╛рди рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрднреА-рдХрднреА, рдФрд░ рдХреЗрд╡рд▓ iOS рдкрд░ред RN рдореЗрдВ рдирд┐рдореНрдирддрдо рд╕реНрддрд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ-рдлреЙрд░реНрдо рд╕реАрдорд╛ рдореЗрдВ рдХрднреА-рдХрднреА рд╡рд░реНрдг (рд╢рд╛рдпрдж рдПрдХ . ) рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдХрдИ рджрд┐рди рд▓рдЧ рдЬрд╛рддреЗ рд╣реИрдВред рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд WAF-рдиреАрддрд┐ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдореИрди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрд░рдПрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реАрдорд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.44.0 рдФрд░ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ 0.63.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛, рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдореИрдВрдиреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛
/android/app/src/debug/java/com/{your-app-name}/ReactNativeFlipper.java
рдлрд╝рд╛рдЗрд▓ред
рдпрд╣ рдХреЗрд╡рд▓ рдлрд┐рдХреНрд╕ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓.рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рдЗрдВрдЯрдмрд┐рд▓реНрдбрд░ () {
@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд▓рд╛рдЧреВ (OkHttpClient.Builder рдирд┐рд░реНрдорд╛рддрд╛) {
//builder.addNetworkInterceptor(рдирдпрд╛ FlipperOkhttpInterceptor(networkFlipperPlugin));
}
});

рдпрджрд┐ рдЖрдкрдиреЗ рдКрдкрд░ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЫрд╡рд┐ рдкрд┐рдХрд░ рдФрд░ рдлреЙрд░реНрдо-рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЫрд╡рд┐ рдкрд┐рдХрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
``` рдЬреЗрдПрд╕
рдЪрд▓реЛ рд╡рд┐рдХрд▓реНрдк = {
рд╢реАрд░реНрд╖рдХ: 'рдЫрд╡рд┐ рдЪреБрдиреЗрдВ',
рдиреЛрдбрд╛рдЯрд╛: рд╕рдЪ,
рдореИрдХреНрд╕рд╡рд┐рдбреНрде: 500,
рдЕрдзрд┐рдХрддрдо рдКрдВрдЪрд╛рдИ: 500,
};
ImagePicker.showImagePicker (рд╡рд┐рдХрд▓реНрдк, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
.
.

Form data should look like this then:

```js
 const formData = new FormData();
        formData.append('avatar', {
          uri: response.uri, 
          name: response.fileName,
          type: 'image/jpeg',
        });

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрд░рд╛ рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ "0.41.0" рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред
gradle.properities рдореЗрдВ
FLIPPER_VERSION=0.41.0

рдпреЗ рджреЛрдиреЛрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЙрдкрд╛рдп рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж рджреЛрдиреЛрдВред @alfianwahid @dmobisoft
FLIPPER_VERSION=0.41.0 рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╕реЛрдЪреЗрдВред

рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЗрд╕ рдХрд╛рдВрдкрдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЗ рд╕реЗ рдЕрд╡рдЧрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд░реНрдХрд╕реНрдкреЗрд╕ (рдЙрджрд╛ред рдПрдХреНрд╕рдкреЛ) рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдЖрд░рдПрди рдлреНрд▓рд┐рдкрд░ рд╣реИрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд "рд╕рдорд╛рдзрд╛рди" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИред рдПрдХреНрд╕рдкреЛ рдЬреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди?

рдирдорд╕реНрддреЗ @ Hiti3 рдореИрдВ рдпрд╣рд╛рдВ рдПрдХреНрд╕рдкреЛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛: https://github.com/expo/expo , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рд╕реАрд╕реА @brentvatne

@ Hiti3 - рдпрд╣ рдкреНрд░рдмрдВрдзрд┐рдд рдПрдХреНрд╕рдкреЛ рдРрдкреНрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рдлрд╝реНрд▓рд┐рдкрд░ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рдПрдорд╕реАрд╡реА рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ https://github.com/ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рднреА рддреНрд░реБрдЯрд┐ рджреЗрдиреЗ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]

рдХреЛрдб :

рдХреЙрдиреНрд╕реНрдЯ рдпреВрдЬрд░рдиреЗрдо = this.state.values.username;
рдХрд╛рд╕реНрдЯ рдЕрдВрддрд┐рдо рдирд╛рдо = рдпрд╣ред рд░рд╛рдЬреНрдпред рдорд╛рдиред рдЕрдВрддрд┐рдо рдирд╛рдо;
const images_path= this.state.images_list[0].url.uri;

                    const data = new FormData();
                   // data.append('name', 'Image Upload');
                    data.append('email', email);
                    data.append('username', username);
                    data.append('file',  { uri:images_path, name: 'image.jpg', type: 'image/jpeg/jpg',path:images_path);

                    let res = await fetch(
                        'IP-Address/cowsoncloud/admin/cowRegister.php',{
                        method: 'POST',
                        body: data,
                        headers: {
                            'Accept': "application/json",
                            'Content-Type': 'multipart/form-data',
                        },
                        })
                    .then(response => response.json())
                        .then(responseJson => {
                        console.log('upload succes',+responseJson);
                        alert('Upload success!'+JSON.stringify(responseJson));
                        })
                        .catch(error => {
                        console.log('upload error', error);
                        alert('Upload failed!'+error);
                        });

                    } else {
                    alert('Please Select File first');
                    }
                };

рдореЗрд░реЗ рд▓рд┐рдП рднреА рддреНрд░реБрдЯрд┐ рджреЗрдиреЗ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]

рдХреЛрдб :

рдХреЙрдиреНрд╕реНрдЯ рдпреВрдЬрд░рдиреЗрдо = this.state.values.username;
рдХрд╛рд╕реНрдЯ рдЕрдВрддрд┐рдо рдирд╛рдо = рдпрд╣ред рд░рд╛рдЬреНрдпред рдорд╛рдиред рдЕрдВрддрд┐рдо рдирд╛рдо;
const images_path= this.state.images_list[0].url.uri;

                    const data = new FormData();
                   // data.append('name', 'Image Upload');
                    data.append('email', email);
                    data.append('username', username);
                    data.append('file',  { uri:images_path, name: 'image.jpg', type: 'image/jpeg/jpg',path:images_path);

                    let res = await fetch(
                        'IP-Address/cowsoncloud/admin/cowRegister.php',{
                        method: 'POST',
                        body: data,
                        headers: {
                            'Accept': "application/json",
                            'Content-Type': 'multipart/form-data',
                        },
                        })
                    .then(response => response.json())
                        .then(responseJson => {
                        console.log('upload succes',+responseJson);
                        alert('Upload success!'+JSON.stringify(responseJson));
                        })
                        .catch(error => {
                        console.log('upload error', error);
                        alert('Upload failed!'+error);
                        });

                    } else {
                    alert('Please Select File first');
                    }
                };

рдЖрдкрдиреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ URL рдХреЗ рд░реВрдк рдореЗрдВ IP рдкрддрд╛ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЧрд▓рдд рдЬрд╛рдВрдЪ рд╣реИред

рдЬрдм рдореИрдВ рдлрд╝рд╛рдЗрд▓ (рдЫрд╡рд┐) рдХреЗ рдмрд┐рдирд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдареАрдХ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛, рдЬрдм рдореИрдВ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕ рд╕рдордп рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ [рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓]; рдпреВрдЖрд░рдПрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рди рд╣реЛрдВ

рдореИрдВрдиреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛
/android/app/src/debug/java/com/{your-app-name}/ReactNativeFlipper.java
рдлрд╝рд╛рдЗрд▓ред
рдпрд╣ рдХреЗрд╡рд▓ рдлрд┐рдХреНрд╕ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓.рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рдЗрдВрдЯрдмрд┐рд▓реНрдбрд░ () {
@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд▓рд╛рдЧреВ (OkHttpClient.Builder рдирд┐рд░реНрдорд╛рддрд╛) {
//builder.addNetworkInterceptor(рдирдпрд╛ FlipperOkhttpInterceptor(networkFlipperPlugin));
}
});

рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ https://github.com/facebook/react-native/issues/29021#issuecomment -662196480ред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 0.37.0 рд╣реИ, рддреЛ рдЗрд╕реЗ 0.41.0 рдореЗрдВ рдЯрдХреНрдХрд░ рджреЗрдВ, рдЗрд╕рдиреЗ рдореЗрд░рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреНрд▓рд┐рдкрд░ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛ рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдерд╛?

@alfianwahid

рд╕рд┐рд░реНрдл рдмрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдПред рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП, рдЖрдк рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.41 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди IOS рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрднреА рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ IOS рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 0.41.5 рд╣реИред рддреЛ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ node_modules/react-native/Libraries/Network/RCTNetworkTask.mm рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдм рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреНрд▓рд┐рдкрд░ FLIPPER_VERSION=0.33.1 рдХреЛ 0.41 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ

@sureshhallyali , рдЖрдк android/gradle.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ FLIPPER_VERSION=0.41.0 рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдВрдбреНрд░реЙрдЗрдб рдмрд┐рд▓реНрдб рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдЪрд▓рд╛рдПрдВред

рдмрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рдЙрдмрдВрдЯреВ рдкрд░ рдлреНрд▓рд┐рдкрд░ 0.50 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ android/gradle.properties рд╕реЗ FLIPPER_VERSION=0.50.0 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ (рдлреНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдбрд┐рдмрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рднреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдФрд░ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ рдЕрднреА рднреА network error рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫрд╡рд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИред react-native 0.62.2 , рдореИрдВ 2 рджрд┐рдиреЛрдВ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ ...

рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ

let formData = new FormData();

    formData.append('id', hospitalId);
    formData.append('date', dataObj.date);
    formData.append('questions', dataObj.questions);

    dataObj.attachments.forEach((attachment) => formData.append('attachments[]', attachment));

    this.props.submit(formData);

рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ (рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ)

try {
      const res = await axios.post(url, formData, {
        headers: {
          Authorization: token ? `Bearer ${token}` : null,
          deviceId: getUniqueId(),
          Accept: 'application/json',
          'Content-Type': `multipart/form-data`,
        },
      });
      console.log('SUBMIT RES >>>> ', res.data);
    } catch (err) {
      console.log('errrr >>>> ', err.response);
      console.log('errrr >>>> ', err);
    }

рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 0.63.1 рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
0.63.2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд░рд╣рддреА рд╣реИ

рдмрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рдЙрдмрдВрдЯреВ рдкрд░ рдлреНрд▓рд┐рдкрд░ 0.50 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ android/gradle.properties рд╕реЗ FLIPPER_VERSION=0.50.0 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@vinifraga , рдЖрдк IOS рдореЗрдВ Flipper рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдЖрдИрдУрдПрд╕/рдкреЙрдбрдлрд╛рдЗрд▓ рд╕реЗ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдирдорд╕реНрддреЗ рджреЛрд╕реНрддреЛрдВ rn-fetch-blob рдЖрдЬрд╝рдорд╛рдПрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореИрдВ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдЗрддрдиреА рд╕рд╛рд░реА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдпрд╣ рдкреИрдХреЗрдЬ рдорд┐рд▓рд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛

рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рдХрд░реЗрдВ

рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдЕрдиреНрдп lib рднреА рдЖрд░рдПрди-рдлрд╝реЗрдЪ-рдЕрдкрд▓реЛрдб, рдЖрд░рдПрди-рдкреГрд╖реНрдарднреВрдорд┐-рдЕрдкрд▓реЛрдб, ...), рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдареАрдХ рд╣реИред рдкреВрд░реНрд╡ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ S3 рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рдпрд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (RN -v 0.59.x рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЕрдм RN -v 0.61.x рдкрд░ рдирд╣реАрдВ:
````
"
EntityTooLarge
рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрдкрд▓реЛрдб рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдордд рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ
2025220
2023115
{...}
5рдПрди+{...}
"

@MayoudP рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ rn-fetch-blob рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдзрдиреНрдпрд╡рд╛рдж @abumostafa

рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛
1: рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
uesCleartextTraffic="true" AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП dir android/app/src/main/AndroidManifest.xml рдХреЗ рдЕрдВрджрд░ рдорд┐рд▓реА
http рдФрд░ https . рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП

2: рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
// рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝реНрд▓рд┐рдкрд░ (рдпрд╣, getReactNativeHost ()ред getReactInstanceManager ());
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ /android/app/src/main/java/com/{your_project}/MainApplication.java
3: рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
//builder.addNetworkInterceptor(рдирдпрд╛ FlipperOkhttpInterceptor(networkFlipperPlugin));
int рдЙрд╕рдХреА рдлрд╝рд╛рдЗрд▓ android/app/src/debug/java/com/{your_project}/ReactNativeFlipper.java
4: рдХрд┐рд╕реА рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдЕрдкрдЧреНрд░реЗрдб рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 63.2 рдкрд░ рднреА рдХрд┐рдпрд╛ рд╣реИ
5: FLIPPER рд╕рдВрд╕реНрдХрд░рдг 50.0 . рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдЕрдм рдПрдХ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: rn-fetch-blob
https://github.com/facebook/react-native/issues/29493

3: рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
//builder.addNetworkInterceptor(рдирдпрд╛ FlipperOkhttpInterceptor(networkFlipperPlugin));

рдЕрдВрдд рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛

рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП rn-fetch-blob рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЖрдИрдУрдПрд╕ рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ), рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреА рдирд┐рдпрдорд┐рдд рдлрд╝реЗрдЪ рдХреЙрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ (рд░реАрдбрдореА рджреЗрдЦреЗрдВ):

https://github.com/joltup/rn-fetch-blob

рдХреНрдпрд╛ рд╕рдЪ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ 4 рдорд╣реАрдиреЗ рддрдХ рдмрдиреА рд░рд╣рддреА рд╣реИ?

@MayoudP рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ rn-fetch-blob рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдирд╣реАрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдкреВрд░реНрд╡ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпреВрдЖрд░рдПрд▓ рдФрд░ рдПрд╕ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ ...

рд╕рд┐рд░реНрдл рдмрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдПред рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП, рдЖрдк рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.41 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди IOS рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрднреА рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ IOS рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 0.41.5 рд╣реИред рддреЛ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ node_modules/react-native/Libraries/Network/RCTNetworkTask.mm рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрдм рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@ anthony1110 рдЖрдк node_modules/react-native/Libraries/Network/RCTNetworkTask.mm рдореЗрдВ рдХреНрдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ?

@MayoudP рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ rn-fetch-blob рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдирд╣реАрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдкреВрд░реНрд╡ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпреВрдЖрд░рдПрд▓ рдФрд░ рдПрд╕ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ ...

рдмрд╕ RNFS рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ rn

@andrekovac , рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред https://github.com/facebook/react-native/issues/29021#issuecomment -664030881

рдкреИрдЪ @ рдПрдВрдердиреА 1110 рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрднреА рднреА рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред

рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╛рдзрд╛рди (рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.63 рдХреЗ рд▓рд┐рдП) рдЬрд▓реНрдж рд╣реА рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ: https://github.com/facebook/react-native/issues/29364#issuecomment -664526253

@andrekovac , рдореЗрд░реЗ рдкреИрдЪ рдХрд╛ рдкрд╛рд▓рди рди рдХрд░реЗрдВ, рд╡рд╣ рд╣реИрдХ рд╣реИред рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рдиред рдЖрдИрдУрдПрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ https://github.com/facebook/react-native/issues/29364#issuecomment -663005914 рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдореИрдВ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ 100% рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╡рд╛рдИ)

рдпрд╣ рдмрдЧ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдХрд░ рджреЗрдЧрд╛
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЕрд░реЗ @ Victor012888 рдиреЗ rn-fetch-blob . рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ

рдореИрдВ рдЕрдкрд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ FLIPPER_VERSION=0.50.0 рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ INSTALL_FAILED_INSUFFICIENT_STORAGE рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирдП рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реИрдВ
рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдФрд░ рд░реИрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореИрдВрдиреЗ рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рди рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрд▓реНрдХрд┐ рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдгред

рдореИрдВрдиреЗ рдЕрдм рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ!
FLIPPER_VERSION=0.52.0 рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣
рдЪрд▓реЛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ = рдирдпрд╛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ ();
this.state.pics.map((value,index) => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдорд╛рди)
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд╕реВрдЪрдХрд╛рдВрдХ)
рдЪрд▓реЛ рдлрд╝рд╛рдЗрд▓ = { рдпреВрд░реА: value.uri , рдЯрд╛рдЗрдк рдХрд░реЗрдВ: 'рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ/рдлреЙрд░реНрдо-рдбреЗрдЯрд╛', рдирд╛рдо: value.uri.substr (value.uri.length-10,10)};
formData.append('file'+index,file)
})

рдЯрд╛рдЗрдк 'рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ/рдлреЙрд░реНрдо-рдбреЗрдЯрд╛' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреЛрд╕реНрдЯ рд╣реЗрдбрд░ рдХреЗ рд╕рдорд╛рдиред


рдЖрд╢рд╛ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ

рдореИрдВ рдЕрдкрд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ FLIPPER_VERSION=0.50.0 рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ INSTALL_FAILED_INSUFFICIENT_STORAGE рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирдП рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реИрдВ
рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдФрд░ рд░реИрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ, RN63+ рдкрд░ рд╢реБрд░реВ рд╣реБрдИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдлрд╝реНрд▓рд┐рдкрд░ рдирд╣реАрдВ рд╣реИред рдлреНрд▓рд┐рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ multipart/form-data рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдиреБрд░реЛрдз рд╣рд░ рдмрд╛рд░ Android рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣реИрд▓реЛ, рдореИрдВ рдПрдХреНрд╕рдкреЛ 38 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд░рдПрди 0.62.2 рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореИрдВ рдирдВрдЧреЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдореВрд▓ рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣рд░ рдлрд┐рдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

  • Flipper рдХреЛ gradle.properties рдореЗрдВ 0.52.0 . рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • MainApplication.java рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝реНрд▓рд┐рдкрд░ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА
  • 'рдлрд╝рд╛рдЗрд▓' рдлреЙрд░реНрдордбреЗрдЯрд╛ рдкрд░рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

рдореЗрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ

export const createFileUploadFormData = (file, body) => {
  const isAndroid = Platform.OS === 'android'
  const fileUri = isAndroid ? file.uri : file.uri.replace('file://', '')
  const fileType = mime.getType(fileUri) || file.type
  const formData = new FormData()
  formData.append('file', {
    name: file.fileName,
    type: fileType,
    uri: fileUri,
  })
  if (body && body.length) {
    Object.keys(body).forEach((key) => {
      formData.append(key, body[key])
    })
  }
  return formData
}

рдореБрдЭреЗ рдХреНрдпрд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдб рдХреА рдлреНрд▓рд┐рдкрд░ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рдордХрд╛рдЬ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ rn-fetch-blob рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рдиреАрдЪреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рд╣реИ:

const response = await RNFetchBlob.fetch(
  'POST',
  'http://192.168.0.20:3000/files',
  {
    Accept: 'application/json',
    'Content-Type': 'multipart/form-data',
  }, [
    {
      name: 'file',
      originalname: 'avataroriginalname',
      filename: 'avatar.pdf',
      type: 'application/pdf',
      data: RNFetchBlob.wrap(<path-to-file>),
    },
  ]
)

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рднрд╛рдИ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

рд╣реИрд▓реЛ, рдореИрдВ рдПрдХреНрд╕рдкреЛ 38 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд░рдПрди 0.62.2 рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореИрдВ рдирдВрдЧреЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдореВрд▓ рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣рд░ рдлрд┐рдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

  • Flipper рдХреЛ gradle.properties рдореЗрдВ 0.52.0 . рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • MainApplication.java рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрд╝реНрд▓рд┐рдкрд░ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА
  • 'рдлрд╝рд╛рдЗрд▓' рдлреЙрд░реНрдордбреЗрдЯрд╛ рдкрд░рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

[...]

рдЖрд╣, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рдерд╛!
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдлрд╝реЗрдЪ рдХреЙрд▓ рдореЗрдВ рдЧрд▓рдд рд╣реЗрдбрд░ рдлреАрдб рдХрд░ рд░рд╣рд╛ рдерд╛, рдПрдХ рдкреБрд░рд╛рдиреЗ рдХреЙрдкреА рдкреЗрд╕реНрдЯ рдХреЗ рдХрд╛рд░рдг >ред<
рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛

const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json',
}

рдЬрдм рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛:

const headers = {
    Accept: 'application/json',
    'Content-Type': 'multipart/form-data',
  }

рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐:

  1. рдпрд╣ рдЧрд▓рддреА рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ
  2. рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдорд╣реАрдиреЛрдВ рд╕реЗ Android рдкрд░ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рд╣реА рд░рд╣рд╛ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ RN рдХреЗ рдкрд┐рдЫрд▓реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ, Android рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдРрд╕реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдЕрдм рдФрд░ рдмрд░реНрджрд╛рд╢реНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА
initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ
/android/app/src/main/java/com/{your_project}/MainApplication.java

рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рд╕рд╛рде рдПрд╕ 3 рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ stream closed рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.51.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.51.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдирдорд╕реНрддреЗ @ omid-ebrahimi, рдЖрдкрдиреЗ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛?

рдзрдиреНрдпрд╡рд╛рдж

рд╡рд╣реА рдореБрджреНрджрд╛ 0.63.2

рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.51.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдирдорд╕реНрддреЗ @ omid-ebrahimi, рдЖрдкрдиреЗ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛?

рдзрдиреНрдпрд╡рд╛рдж

android/gradle.properties рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝реЗрдВ

FLIPPER_VERSION=0.52.1

рдЖрдкрдХреЗ android/app/build.gradle рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

dependencies {
    // ....

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
      exclude group:'com.facebook.fbjni'
    }

    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    // ...
}

рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.51.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдирдорд╕реНрддреЗ @ omid-ebrahimi, рдЖрдкрдиреЗ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛?
рдзрдиреНрдпрд╡рд╛рдж

android/gradle.properties рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝реЗрдВ

FLIPPER_VERSION=0.52.1

рдЖрдкрдХреЗ android/app/build.gradle рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

dependencies {
    // ....

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
      exclude group:'com.facebook.fbjni'
    }

    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    // ...
}

@ omid-ebrahimi рдЕрдкрдЧреНрд░реЗрдбрд┐рдВрдЧ рдлреНрд▓рд┐рдкрд░ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рд╡рд╣рд╛рдВ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдЗрдирд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВ рдлреНрд▓рд┐рдкрд░ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 52.0 . рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ
рдФрд░ рд▓рд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдЬрдм axios.post рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддреЛ рдХрд╛рдо рди рдХрд░реЗрдВ
рдФрд░ рдЬрдм axios рдЬреИрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
axios({ method:'post , data : file , url:'something ',............. })
рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдФрд░ рд╣реЗрдбрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ
'Content-Type': 'multipart/form-data'
рдпрд╣ рднреА рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java

@abumostafa рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рднрд╛рд╡реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА "рдлрд╝рд╛рдЗрд▓: ///" рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕реЗ:

  • рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ: formData.append('files', {uri:'https://xxx.jpg', type:'image/jpeg', name:'test.jpeg' })
  • рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: formData.append('files', {uri:'file:///xxx.jpg', type:'image/jpeg', name:'test.jpeg' })

рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдгя╝Ъ

"dependencies": {
    "react": "^16.11.0",
    "react-native": "^0.62.2"
  }

рдЙрд╕реА рдореБрджреНрджреЗ рдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ред

{
 "react": "16.13.1",
  "react-native": "0.63.2",
}

рдЖрдИрдУрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЖрдИрдУрдПрд╕ рдкрд░ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореЗрд░реЗ рдкреЙрдбрдлрд╛рдЗрд▓ рдореЗрдВ рдлреНрд▓рд┐рдкрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.33.1 рд╕реЗ 0.50.0 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИ

{
  "react": "16.11.0",
  "react-native": "0.62.2",
}

@abumostafa рдХреЗ рд╕реБрдЭрд╛рд╡ рдиреЗ рдЗрд╕реЗ Android рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕реЗ iOS рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдмрдирд╛рдпрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: react-native: 0.63.2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрднреА рднреА рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред

рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрд╕ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд┐рд╕рд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ рд╡реЗрдмрд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╣реИрдХ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди <WebView> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ .. рдЬрдм рдореИрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░реВрдВрдЧрд╛ generateUploadCodes() рдФрд░ рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣реЛрдЧрд╛ рд╡реЗрдмрд╡реНрдпреВ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

  function generateUploadCodes(name, data) {
    return `function upload() {
      let formData = new FormData();
      formData.append('file', new Blob(["${data}"], {type: 'text/csv'}));

      let xhr = new XMLHttpRequest();
      xhr.open("post","https://myuploadserver.com");
      xhr.setRequestHeader("Authorization", "Bearer ${accessToken}");
      xhr.responseType = "json";
      xhr.onload = () => {
         window.ReactNativeWebView.postMessage(xhr.response);
      };
      xhr.send(formData);
    }
    upload(); 
    `;
  }

рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдмрд╕ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

let toInject = generateUploadCodes("mydata.txt", "somedata");
webRef.current.injectJavascript(toInject);

рдЕрдкрд▓реЛрдб рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо webview.ReactNativeWebView.postMessage('our response'); рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╡реЗрдмрд╡реНрдпреВ рдХреЗ onMessage рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред

рдЗрди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдирд╛ рд░реЗрдлрд░реА рдФрд░ рдЕрдкрдирд╛ WebView рдШрдЯрдХ рдкрд╣рд▓реЗ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛

  const webview = useRef(null);

  <WebView
        ref={webview}
        source={{html: 'hi'}}
        injectedJavaScript={''}
        javaScriptEnabledAndroid={true}
        javaScriptEnabled={true}
        onMessage={event => {
              console.log(event.nativeEvent.data);
        }}
      />

рдпрд╣рд╛рдВ рд╕рднреА рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддреЗ рд╣реБрдП, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЖрдИрдУрдПрд╕: рдПрдХ рдкреАрдЖрд░ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВ, рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: https://github.com/facebook/react-native/issues/29364#issuecomment -671565181, рдкреАрдЖрд░ рдпрд╣рд╛рдВ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/facebook/react -рджреЗрд╢реА/рдкреБрд▓/29595

рдПрдВрдбреНрд░реЙрдЗрдб: рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ https://github.com/facebook/react-native/issues/28551#issuecomment -674351386, PR рдиреЗ https://github.com/facebook/react-native/pull/29787 рдХреЛ рдмрдврд╝рд╛рдпрд╛

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА RN рд╕рдВрд╕реНрдХрд░рдг 0.62 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЖрдкрдХреЛ рдпреВрд░реА, рдирд╛рдо рдФрд░ рдореАрдбрд┐рдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

рдлрд┐рд░ рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ:
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
android/app/src/debug/java/com/"рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо"/ReactNativeFlipper.java рдкрд░

рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрд░реАрдм 8 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВред

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА RN рд╕рдВрд╕реНрдХрд░рдг 0.62 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЖрдкрдХреЛ рдпреВрд░реА, рдирд╛рдо рдФрд░ рдореАрдбрд┐рдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

рдлрд┐рд░ рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ:
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
android/app/src/debug/java/com/"рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо"/ReactNativeFlipper.java рдкрд░

рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрд░реАрдм 8 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВред

рд╣рд╛рдВ, рдореЗрд░реЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдерд╛, рдпрд╣рд╛рдВ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА: https://github.com/facebook/react-native/issues/29364#issuecomment -679370449

рдПрдлрдмреА рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рдлреНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдкреАрдЖрд░ https://github.com/facebook/react-native/pull/29787

рдпрд╣рд╛рдВ рд╕рднреА рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддреЗ рд╣реБрдП, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЖрдИрдУрдПрд╕: рдПрдХ рдкреАрдЖрд░ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВ, рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: https://github.com/facebook/react-native/issues/29364#issuecomment -671565181, рдкреАрдЖрд░ рдпрд╣рд╛рдВ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/facebook/react -рджреЗрд╢реА/рдкреБрд▓/29595

рдПрдВрдбреНрд░реЙрдЗрдб: рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ https://github.com/facebook/react-native/issues/28551#issuecomment -674351386, PR рдиреЗ https://github.com/facebook/react-native/pull/29787 рдХреЛ рдмрдврд╝рд╛рдпрд╛

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА рдФрд░ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЕрдкрд▓реЛрдб рдХреЗ mime_type рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрди рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд░рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:

  • рдЙрд░реА
  • рдирд╛рдо
  • рдкреНрд░рдХрд╛рд░

рдлреНрд▓рд┐рдкрд░ рдХреЛ FLIPPER_VERSION=0.52.1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ - android/gradle.properties рдФрд░ yarn android рдЪрд▓рд╛рдПрдВред

fetch

let uriParts = this.state.pickedFileUri.split('.');
let fileType = uriParts[uriParts.length - 1];
const file = {
            uri: this.state.pickedFileUri, // works with fileurl like file:///.....
            name: `myFile.${fileType}`,
            type: `text/${fileType}`,
        };

const data = new FormData();
data.append('file', file);
return fetch(url, {
        method: 'POST',
        body: data,
});

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

   "react": "16.11.0",
    "react-native": "0.62.2",

рдХреНрдпрд╛ рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдХреЛрдИ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди ? рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХреБрдЫ рдлрд╝реНрд▓рд┐рдкрд░ рдХрдорд╛рдВрдб, рдлрд╝реНрд▓рд┐рдкрд░ рдХреЛ graddle.properties рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ RN рдХреЛ 0.63 рд╕реЗ 0.62 рддрдХ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛, рдлрд┐рд░ рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2 рджрд┐рдиреЛрдВ рд╕реЗ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдЫрд╡рд┐ рдЬреИрд╕реА рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ

@safaiyeh рдиреЗ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╕рд░, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА RN рд╕рдВрд╕реНрдХрд░рдг 0.62 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЖрдкрдХреЛ рдпреВрд░реА, рдирд╛рдо рдФрд░ рдореАрдбрд┐рдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

рдлрд┐рд░ рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ:
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
android/app/src/debug/java/com/"рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо"/ReactNativeFlipper.java рдкрд░

рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрд░реАрдм 8 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВред

рдореИрдВрдиреЗ рд╡рд╣реА рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.13.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.63.1",

@sadruva рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИ

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА:

  • рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛

  • рдореЗрд░рд╛ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдирд╛

  • рдХреЛрдб рдХреЛ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд┐рдЦрдирд╛

рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдореЗрд░реЗ рдРрдк рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░реАрди рдкрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдлреЛрди рдкрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рддреЛ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдЕрднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд░рд┐рд▓реАрдЬ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ред

рдЬреАрд╡рди рд╣реА рдЬреАрд╡рди рд╣реИ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА:

  • рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛
  • рдореЗрд░рд╛ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдирд╛
  • рдХреЛрдб рдХреЛ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд┐рдЦрдирд╛

рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдореЗрд░реЗ рдРрдк рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░реАрди рдкрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдлреЛрди рдкрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рддреЛ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдЕрднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд░рд┐рд▓реАрдЬ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ред

рдЬреАрд╡рди рд╣реА рдЬреАрд╡рди рд╣реИ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдореЗрд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реЗрдмрдПрдкреАрдкреА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдкреИрдХреЗрдЬ рд╕рд╛рдордЧреНрд░реА -рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реИ: рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ/рдлреЙрд░реНрдо-рдбреЗрдЯрд╛ рд╣реЗрдбрд░, рдЬрдмрдХрд┐ рдЖрд░рдПрди рд╕рд╛рдордЧреНрд░реА -рдкреНрд░рдХрд╛рд░: рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдлреЙрд░реНрдо-рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЕрдиреБрд░реЛрдз рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛:
await fetch(url, { method: 'POST', headers: { 'Content-Type': 'multipart/form-data', }, body: formData, })
рдлрд┐рд░ рдлреЙрд░реНрдордбреЗрдЯрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
let formData = new FormData(); formData.append('file', {uri: fileUri,type:fileType,name:fileName});
рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрдорддреНрдХрд╛рд░реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдг 0.63.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-рдХреНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

1 - android/app/src/main/java/com/{yourProject}/MainApplication.java рдореЗрдВ
рдЯрд┐рдкреНрдкрдгреА -> initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

2 - android/app/src/debug/java/com/{yourProject}/ReactNativeFlipper.java рдореЗрдВ
рдкрдВрдХреНрддрд┐ 43 рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ -> builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));

3 - android/gradle.properties рдореЗрдВ
FLIPPER_VERSION=0.37.0 рдХреЛ FLIPPER_VERSION=0.52.1 . рдореЗрдВ рдмрджрд▓реЗрдВ

4 - android/app/build.gradle рдореЗрдВ
рд╡рд░реНрддрдорд╛рди рдлреНрд▓рд┐рдкрд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ

  dependencies {
    // ....

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
      exclude group:'com.facebook.fbjni'
    }

    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    // ...
  }

рдФрд░ рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж -> npx react-native run-android рдпрд╛ yarn android

5 - рдореЗрд░реЗ рдкреЛрд╕реНрдЯ рдЕрдкрд▓реЛрдб рдЕрдиреБрд░реЛрдз рдореЗрдВ

  const data = new FormData();
  // Android need to add "file:///" to work

  const path =
    Platform.OS === 'android' ? `file:///${image?.path}` : image?.path;

    const file = { // use name, type, uri as object keys
      name: image?.fileName,
      type: image?.type,
      uri: path,
    };


    data.append('file', file);

    // using axios
    const response = await api.post(
          'apiurl',
          data,
          {
            headers: {
              Authorization: `Bearer ${token}`,
            },
          },
        );

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛

@mathrocha12100 рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреБрдЫ рдХреЛрдб рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЪрд░рдг рджрд░ рдЪрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА, рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЙрддреНрддрд░ рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВ (рдореЗрд░реЗ рд╕рд╣рд┐рдд)ред

рдЪреАрдпрд░реНрд╕ред

рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@dlogvin
рдореИрдВрдиреЗ рдХрд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ @ omid-ebrahimi рдиреЗ рдХрд╣рд╛ [рдлреНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ], рд╕рд╛рде рд╣реА рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); рдкрд░ ReactNativeFlipper.java

рдХреНрд▓реАрди рдмрд┐рд▓реНрдб рдлреЛрд▓реНрдбрд░ [ios, android]
рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)

@dlogvin
рдореИрдВрдиреЗ рдХрд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ @ omid-ebrahimi рдиреЗ рдХрд╣рд╛ [рдлреНрд▓рд┐рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ], рд╕рд╛рде рд╣реА рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); рдкрд░ ReactNativeFlipper.java

рдХреНрд▓реАрди рдмрд┐рд▓реНрдб рдлреЛрд▓реНрдбрд░ [ios, android]
рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)

рдЖрдк рдлреНрд▓рд┐рдкрд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА FLIPPER рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ рднреА рдирд╣реАрдВред рджрд░рдЕрд╕рд▓, рдРрдк рдХреЗ рдбрд┐рдмрдЧ рд╡рд░реНрдЬрди рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдХрдореЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрдореЗрдЬ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдкреВрд░реА рдЧрдбрд╝рдмрдбрд╝реА рд╣реИ...

@dlogvin android/gradle.properties рдореЗрдВ
FLIPPER_VERSION=0.37.0 рдХреЛ FLIPPER_VERSION=0.52.1 . рдореЗрдВ рдмрджрд▓реЗрдВ

рдпрджрд┐ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ

 "react": "16.13.1",
  "react-native": "0.63.2",

@anastely рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ ... рдЕрднреА рднреА рдХреБрдЫ рдирд╣реАрдВ :(

рдореИрдВ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ...

@dlogvin рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЦреЗрдж рд╣реИ :(

рдЕрдЧрд░ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрдкрди рд╕реЛрд░реНрд╕ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдЪреЗрдХ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ

рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдлреЙрд░реНрдо рдЕрдиреНрдп рд╕реНрдХреНрд░реАрди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд░рдПрди рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рдмреАрдЪ рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдИрдлреЛрди рд╡рд░реНрдЬрди рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╡рд░реНрдЬрди рдХреЛ рдмреАрдЯрд╛ рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдореИрдВ рдлрд╝реНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ gradle.setting рдлрд╝рд╛рдЗрд▓ FLIPPER_VERSION=0.30.2 рд╕реЗ FLIPPER_VERSION=0.52.1 рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ, рдлрд┐рд░ gradlew рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА XMLHttpRequest рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдХреНрд╕рдкреЛрд░реНрдЯ рд▓реЗрдЯ рдбреЗрдЯрд╛рд╡рд┐рдердЗрдореЗрдЬ = рдПрд╕рд┐рдВрдХреНрд╕ (рдПрдВрдбрдкреЙрдЗрдВрдЯ, рдкреИрд░рд╛рдореНрд╕) => {
рдЯреЛрдХрди рджреЗрдВ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ AsyncStorage.getItem('token');
рдЪрд▓реЛ xhr = рдирдпрд╛ XMLHttpRequest ();
рдЪрд▓реЛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ = рдирдпрд╛ рдлреЙрд░реНрдордбрд╛рдЯрд╛ ();
рдХреЗ рд▓рд┐рдП (рдкреИрд░рд╛ рдореЗрдВ рдХреБрдВрдЬреА рджреЗрдВ) {
formData.append (рдХреБрдВрдЬреА, рдкреИрд░рд╛рдореНрд╕ [рдХреБрдВрдЬреА]);
}
xhr.withCredentials = рд╕рдЪ;
xhr.addEventListener ('рд░реЗрдбреАрд╕реНрдЯреЗрдЯрдЪреЗрдВрдЬ', рдлрд╝рдВрдХреНрд╢рди () {
рдЕрдЧрд░ (рдпрд╣.рд░реЗрдбреАрд╕реНрдЯреЗрдЯ === 4) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (this.responseText, '===> рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ');
}
});
xhr.open ('рдкреЛрд╕реНрдЯ', рдпреВрдЖрд░рдПрд▓ + рдПрдВрдбрдкреЙрдЗрдВрдЯ);
xhr.setRequestHeader ('рдкреНрд░рд╛рдзрд┐рдХрд░рдг', 'рд╡рд╛рд╣рдХ' + рдЯреЛрдХрди);
xhr.send (рдлреЙрд░реНрдордбрд╛рдЯрд╛);
};

рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ (HTTPS) рдкрд░ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдирд╣реАрдВред рдлреНрд▓рд┐рдкрд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ (https://jsonplaceholder.typicode.com/) рдФрд░ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐" рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдФрд░ android:usesCleartextTraffic= "true" рдХреЛ android рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рд▓рд╛рдиреЗ рдпрд╛ axios рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред

рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП
node_modules/react-native/Libraries/Image/RCTLocalAssetImageLoader.mm рдлрд╝рд╛рдЗрд▓

рдиреАрдЪреЗ рдмрджрд▓реЗрдВ

  • -(RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
    рдЖрдХрд╛рд░:(CGSize)рдЖрдХрд╛рд░
    рд╕реНрдХреЗрд▓: (рд╕реАрдЬреАрдПрдл рдлреНрд▓реЛрдЯ) рд╕реНрдХреЗрд▓
    рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдореЛрдб: (рдЖрд░рд╕реАрдЯреАрдЖрд░рд╕рд╛рдЗрдЬрдореЛрдб) рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдореЛрдб
    рдкреНрд░реЛрдЧреНрд░реЗрд╕рд╣реИрдВрдбрд▓рд░:(рдЖрд░рд╕реАрдЯреАрдЗрдореЗрдЬрд▓реЛрдбрд░рдкреНрд░реЛрдЧреНрд░реЗрд╕рдмреНрд▓реЙрдХ)рдкреНрд░реЛрдЧреНрд░реЗрд╕рд╣реИрдВрдбрд▓рд░
    рдЖрдВрд╢рд┐рдХ рд▓реЛрдб рд╣реИрдВрдбрд▓рд░: (рдЖрд░рд╕реАрдЯреА рдЗрдореЗрдЬ рд▓реЛрдбрд░ рдкрд╛рд░реНрдЯрд┐рдпрд▓ рд▓реЛрдбрдмреНрд▓реЙрдХ) рдЖрдВрд╢рд┐рдХ рд▓реЛрдб рд╣реИрдВрдбрд▓рд░
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░:(RCTImageLoaderCompletionBlock)completionHandler
    {
    UIImage *image = RCTImageFromLocalAssetURL(imageURL);
    рдЕрдЧрд░ (рдЫрд╡рд┐) {
    рдЕрдЧрд░ (рдкреНрд░рдЧрддрд┐ рд╣реИрдВрдбрд▓рд░) {
    рдкреНрд░рдЧрддрд┐рд╣реИрдВрдбрд▓рд░(1, 1);
    }
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░ (рд╢реВрдиреНрдп, рдЫрд╡рд┐);
    } рдЕрдиреНрдп {
    NSString *message = [NSString stringWithFormat:@"рдЗрдореЗрдЬ %@ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛", рдЗрдореЗрдЬрдпреВрдЖрд░рдПрд▓];
    RCTLogWarn(@"%@", рд╕рдВрджреЗрд╢);
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░ (RCTErrorWithMessage (рд╕рдВрджреЗрд╢), рд╢реВрдиреНрдп);
    }

    рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп;
    }

рд╕рд╛рде

  • -(RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
    рдЖрдХрд╛рд░:(CGSize)рдЖрдХрд╛рд░
    рд╕реНрдХреЗрд▓: (рд╕реАрдЬреАрдПрдл рдлреНрд▓реЛрдЯ) рд╕реНрдХреЗрд▓
    рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдореЛрдб: (рдЖрд░рд╕реАрдЯреАрдЖрд░рд╕рд╛рдЗрдЬрдореЛрдб) рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдореЛрдб
    рдкреНрд░реЛрдЧреНрд░реЗрд╕рд╣реИрдВрдбрд▓рд░:(рдЖрд░рд╕реАрдЯреАрдЗрдореЗрдЬрд▓реЛрдбрд░рдкреНрд░реЛрдЧреНрд░реЗрд╕рдмреНрд▓реЙрдХ)рдкреНрд░реЛрдЧреНрд░реЗрд╕рд╣реИрдВрдбрд▓рд░
    рдЖрдВрд╢рд┐рдХ рд▓реЛрдб рд╣реИрдВрдбрд▓рд░: (рдЖрд░рд╕реАрдЯреА рдЗрдореЗрдЬ рд▓реЛрдбрд░ рдкрд╛рд░реНрдЯрд┐рдпрд▓ рд▓реЛрдбрдмреНрд▓реЙрдХ) рдЖрдВрд╢рд┐рдХ рд▓реЛрдб рд╣реИрдВрдбрд▓рд░
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░:(RCTImageLoaderCompletionBlock)completionHandler
    {
    __рдмреНрд▓реЙрдХ рдСрдЯреЛ рд░рджреНрдж = std::make_shared<:atomic i="44">>(false);
    RCTExecuteOnMainQueue(^{
    рдЕрдЧрд░ (рд░рджреНрдж-> рд▓реЛрдб ()) {
    рд╡рд╛рдкрд╕реА;
    }

    UIImage *image = RCTImageFromLocalAssetURL(imageURL);
    рдЕрдЧрд░ (рдЫрд╡рд┐) {
    рдЕрдЧрд░ (рдкреНрд░рдЧрддрд┐ рд╣реИрдВрдбрд▓рд░) {
    рдкреНрд░рдЧрддрд┐рд╣реИрдВрдбрд▓рд░(1, 1);
    }
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░ (рд╢реВрдиреНрдп, рдЫрд╡рд┐);
    } рдЕрдиреНрдп {
    NSString *message = [NSString stringWithFormat:@"рдЗрдореЗрдЬ %@ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛", рдЗрдореЗрдЬрдпреВрдЖрд░рдПрд▓];
    RCTLogWarn(@"%@", рд╕рдВрджреЗрд╢);
    рдкреВрд░реНрдгрддрд╛рд╣реИрдВрдбрд▓рд░ (RCTErrorWithMessage (рд╕рдВрджреЗрд╢), рд╢реВрдиреНрдп);
    }
    });

    рд╡рд╛рдкрд╕реА ^{
    рд░рджреНрдж-> рд╕реНрдЯреЛрд░ (рд╕рдЪ);
    };
    }

рдЗрд╕..

рдкрд╕рдВрдж рдФрд░ рдкреНрдпрд╛рд░, рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╣рд╛рдп рд╕рдм рдлрд┐рдХреНрд╕ рдХреЛ рдЕрднреА рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/facebook/react-native/commit/d8b70b19b39ead4dd41895d666d116a43c56474e

рдПрдХ рдЖрдИрдУрдПрд╕ рдлрд┐рдХреНрд╕ рднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдерд╛ред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдмреИрдХ рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ: https://github.com/react-native-community/releases/issues/203#issuecomment -695052285, 0.63.3 рдпрд╛ 0.64 рдореЗрдВ рдЗрд╕рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВ

@safaiyeh рдореИрдВ рдЕрднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред рдореИрдВ Android ASAP рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЕрдкрдирд╛ рд╣рд╛рде рд╡рд╛рдкрд╕ рд░рдЦрдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдЪреАрдпрд░реНрд╕ред

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рд╣рд╛рдБ, рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ тАНтЩВя╕П рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╕рд╣реА рд▓реЛрдЧреЛрдВ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рддреЗ рд╣реБрдП рдереЛрдбрд╝рд╛ рд╡реНрдпрд╕реНрдд рд░рд╣рд╛ рд╣реИред рдХрд░реАрдм рдЖ рд░рд╣реЗ рд╣реИрдВ!

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ @mathrocha12100 рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрд╕реА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рдЖрдИрдУрдПрд╕ рдкрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ рдкрд░ рдореЗрд░реА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╡рд╣реА рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рджреВрд╕рд░реА рдмрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдпрд╣ рд╣рд░ рд╕рдордп рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдореИрдВ axios 0.19.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА 0.62.2

@ рд╡рд╛рдЬрд┐рдж-рдЦрд╛рди рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ рдореБрджреНрджрд╛ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рд╣реИ? рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХрд╛ рдмреИрдХрдПрдВрдб рд╣реИ, рдЖрдкрдХрд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛрдб рд╣реИ рдпрд╛ рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реА рд╣реИ, рдкреЛрд╕реНрдЯрдореИрди рдпрд╛ рдЗрдирд╕реЛрдореНрдирд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдореБрдЭреЗ рдЕрдиреНрдп рдПрдкреАрдЖрдИ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

@dlogvin рд╣рд╛рдБ рдореИрдВрдиреЗ рдбрд╛рдХрд┐рдпрд╛ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИред рдбрд╛рдХрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд╣рд░ рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рднреА рд╣рд░ рд╕рдордп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдкрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

@dlogvin рд╣рд╛рдБ рдореИрдВрдиреЗ рдбрд╛рдХрд┐рдпрд╛ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИред рдбрд╛рдХрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд╣рд░ рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рднреА рд╣рд░ рд╕рдордп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдкрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

@ рд╡рд╛рдЬрд┐рдж-рдЦрд╛рди рдпрд╣ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде POST рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ, рд╢рд╛рдпрдж рд╣реЗрдбрд░ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@dlogvin рд╣рд╛рдБ рдореИрдВрдиреЗ рдбрд╛рдХрд┐рдпрд╛ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИред рдбрд╛рдХрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд╣рд░ рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рднреА рд╣рд░ рд╕рдордп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЖрдИрдУрдПрд╕ рдкрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

@ рд╡рд╛рдЬрд┐рдж-рдЦрд╛рди рдпрд╣ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде POST рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ, рд╢рд╛рдпрдж рд╣реЗрдбрд░ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЙрдирдХреЗ рдореБрджреНрджреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж "рдЖрдИрдУрдПрд╕" рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреАрдЖрд░ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдЬрдм рдореИрдВ рдПрдХреНрд╕рдХреЛрдб рдЦреЛрд▓рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ

[native] Missing request token for request: <NSURLRequest: 0x600000dda4e0> { URL: file:///Users/anastely/Library/Developer/CoreSimulator/Devices/13C4E525-8577-44A3-A5F3-F6693B9CDFF6/data/Containers/Data/Application/FD4541BF-805A-4420-9AF3-0A9A55854126/tmp/react-native-image-crop-picker/7E060441-D875-4883-BD34-89872ECB3CB7.jpg }

рддреЛ рдореБрдЭреЗ рдпрд╣ # https://github.com/facebook/react-native/commit/31980094107ed37f8de70972dbcc319cc9a26339 рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдорд┐рд▓рд╛
рдФрд░ рдЬреИрд╕рд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛, рдЙрд╕рдХреА рдЬрдЧрд╣
рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореЗрд░реЗ рдРрдк рдореЗрдВ рдореИрдВ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рднреЗрдЬрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореИрдВ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ _рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдЪреБрдирддрд╛ рд╣реВрдВ, рддреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА _'рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ'_ рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛,
рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ!
рдЕрдЧрд░ рдХреЛрдИ рдпрд╣рд╛рдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЕрдкрдиреЗ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ!

@mathrocha12100 рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЗ рдЙрддреНрддрд░ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛

рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдпрд╣рд╛рдБ рдХрд╣рд╛ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА! рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛!

рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ

let formData = new FormData();
formData.append('file', {
     name: filename,
     uri: uri // For android the path should start like this "content://". If uri starts with "file://", replace with "content://" 
     type: type
}
axios.post(URL, formData, { headers: { 'Content-Type': 'multipart/form-data'}})

рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ

let formData = new FormData();
formData.append('file', {
     name: filename,
     uri: uri // For android the path should start like this "content://". If uri starts with "file://", replace with "content://" 
     type: type
}
axios.post(URL, formData, { headers: { 'Content-Type': 'multipart/form-data'}})

рдпрд╣ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдРрдк рдореЗрдВ рдЕрдиреНрдп рд░реВрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдИ рдкрде рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ

let formData = new FormData();
formData.append('file', {
     name: filename,
     uri: uri // For android the path should start like this "content://". If uri starts with "file://", replace with "content://" 
     type: type
}
axios.post(URL, formData, { headers: { 'Content-Type': 'multipart/form-data'}})

рдпрд╣ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдРрдк рдореЗрдВ рдЕрдиреНрдп рд░реВрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдИ рдкрде рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдиреНрдп рдкреЛрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛рдо рдХрд░реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлреНрд▓рд┐рдкрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.58 рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрд▓реНрдбрд░ рдореЗрдВ gradlew clean рд░рди рдХрд░реЗрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдмрджрд▓рдирд╛: // рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

@safaiyeh рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореИрдВ рдЕрдкрдирд╛ рдРрдк рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :(

рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реИред рдпрд╣ Flipper рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИ

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            <strong i="9">@Override</strong>
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ android/app/src/debug/java/com/**/ReactNativeFlipper.java

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА 0.63 рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдпрд╣рд╛рдБ рдХрд╣рд╛ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА! рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛!
@mathrocha12100 рдХреЗ рдЪрд░рдг рдПрдХ рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛!
android/app/src/main/java/com/{yourProject}/MainApplication.java comment -> initializeFlipper(this, getReactNativeHost().getReactInstanceManager())

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ!

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕:

рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.46.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.52.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
ReactNativeFlipper.java рдХреА рд▓рд╛рдЗрди 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
рдПрдВрдбреНрд░реЙрдЗрдб/рдРрдк/src/рдбреАрдмрдЧ рдореЗрдВ рдбреАрдмрдЧ рдлрд╝реЛрд▓реНрдбрд░ рд╣рдЯрд╛рдПрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг:

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.13.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.63.2",
"рдЕрдХреНрд╖": "^ 0.20.0",

рд╣рдореЗрдВ рддрддреНрдХрд╛рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ!

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕:

рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.46.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.52.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
ReactNativeFlipper.java рдХреА рд▓рд╛рдЗрди 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
рдПрдВрдбреНрд░реЙрдЗрдб/рдРрдк/src/рдбреАрдмрдЧ рдореЗрдВ рдбреАрдмрдЧ рдлрд╝реЛрд▓реНрдбрд░ рд╣рдЯрд╛рдПрдВ (рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг:

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.13.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.63.2",
"рдЕрдХреНрд╖": "^ 0.20.0",

рд╣рдореЗрдВ рддрддреНрдХрд╛рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдореИрдВ рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ... рд╣рдореЗрдВ рддрддреНрдХрд╛рд▓ рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рджреЗрд░реА рдХрд░ рд░рд╣рд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдкреНрд░рддреАрдХреНрд╖рд╛ рд▓рдВрдмреА рдФрд░ рд▓рдВрдмреА рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИред рдЕрдкрдбреЗрдЯ рдХрдм рдЖ рд░рд╣рд╛ рд╣реИ?

рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдлрд┐рдХреНрд╕ 0.63.3 рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдФрд░ рдареАрдХ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ!

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЧреНрд░реЗрдбреЗрд▓ рдмрд┐рд▓реНрдб рдХреЛ рднреА рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рдореБрджреНрджрд╛ рд╣реБрдЖ рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ

рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдлрд┐рдХреНрд╕ 0.63.3 рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдФрд░ рдареАрдХ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ!

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЧреНрд░реЗрдбреЗрд▓ рдмрд┐рд▓реНрдб рдХреЛ рднреА рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рдореБрджреНрджрд╛ рд╣реБрдЖ рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ

рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдореЗрдВ gradle.properties рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореЗрд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ FLIPPER_VERSION=0.33.1

рдЕрдкрдбреЗрдЯ: рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛: 0.54.0 , рдлрд┐рд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реБрдзрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЬреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдЧрдП, рдХреГрдкрдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕реНрд╡рдпрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реБрдИред @murilocrugner ??

@dlogvin рдореИрдВрдиреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 63.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпрд╛ рд╣рдореЗрдВ рдлреНрд▓рд┐рдкрд░ рдХреЛ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИ?

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реИ: 0.37.0

рддрдм рдЕрджреНрдпрддрди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@рд╕рдлрд╛рдИрдпреЗрд╣

рдЕрджреНрдпрддрди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реИ, рдмрд╕ рдПрдХ рдЕрдкрд▓реЛрдб рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪрд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ

рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реИ, рдмрд╕ рдПрдХ рдЕрдкрд▓реЛрдб рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪрд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ

рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдРрдк рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИред

рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реНрдг рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://react-native-community.github.io/upgrad-helper/

рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реНрдг рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://react-native-community.github.io/upgrad-helper/

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдХреБрдЫ рднреА рдорджрдж рдирд╣реАрдВ рдХреАред

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмреЗрд╡рдХреВрдлреА рднрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ: "D
рд▓реЗрдХрд┐рди рдЖрдк рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ 0.63.3 рдореЗрдВ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ?
рд╕рд╣рд╛рдпрдХ рдФрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднрд┐рдиреНрди рд╣реИ?

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмреЗрд╡рдХреВрдлреА рднрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ: "D
рд▓реЗрдХрд┐рди рдЖрдк рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ 0.63.3 рдореЗрдВ рдХреИрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ?
рд╕рд╣рд╛рдпрдХ рдФрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднрд┐рдиреНрди рд╣реИ?

npx react-native upgrade рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ 99.99% рдпрдХреАрди рд╣реИ рдХрд┐ "рдлрд┐рдХреНрд╕" рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ 63.2 рд╕реЗ 63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.37.0 рд╕реЗ 0.54.0 . рддрдХ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИ?

0.63.3 . рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж

рдореБрдЭреЗ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдХреБрдЫ рдЕрдЬреАрдм рдореБрджреНрджреЗ рдорд┐рд▓реЗ рдЬрдм рдореИрдВ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЫрд╡рд┐ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдЪреБрдирддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реВрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛! рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !! "рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ 13.3"

рдПрдВрдбреНрд░реЙрдЗрдб рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;)

рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ рдорд╛рдорд▓рд╛ рд╕реБрд▓рдЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рд╣реИред

рдЗрд╕ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЛрдИ рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ @safaiyeh

рдЪрд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВред рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдХреЗ рд╕рд╛рде рдиреНрдпреВрдирддрдо рд░реЗрдкреЛ рдХреЗ рд╕рд╛рдеред

рдПрдХ @anaastely ios рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдФрд░

@dlogvin рдПрдВрдбреНрд░реЙрдЗрдб рдореБрджреНрджрд╛ред

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯреИрдЧ рдХрд░реЗрдВред

рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд┐рддрдиреЗ рднреА рд╕рдорд╛рдзрд╛рди рдорд┐рд▓реЗ, рдЕрдм рддрдХ рдХрд┐рд╕реА рдиреЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рд▓реЗрдХрд┐рди рд╕рдордп рд╕реАрдорд╛ рдХрдо рдереА, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдмреИрдХрдПрдВрдб рдкрд░ рднреЗрдЬрдирд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдмреЗрд╣рдж рдЬрд░реВрд░реА рд╣реИред

рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд┐рддрдиреЗ рднреА рд╕рдорд╛рдзрд╛рди рдорд┐рд▓реЗ, рдЕрдм рддрдХ рдХрд┐рд╕реА рдиреЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 0.62 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рд▓реЗрдХрд┐рди рд╕рдордп рд╕реАрдорд╛ рдХрдо рдереА, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдмреИрдХрдПрдВрдб рдкрд░ рднреЗрдЬрдирд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдмреЗрд╣рдж рдЬрд░реВрд░реА рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЙрди рд╕рднреА рдРрдкреНрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

@safaiyeh рд╣рд╛рдБ, рдореИрдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ред рдШрд░ рдЖрдиреЗ рдкрд░ рдХрд░реВрдВрдЧрд╛ред

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБред рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо!

рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛ 0.63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ !!

рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБред рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо!

рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛ 0.63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ !!

рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐... рдореИрдВрдиреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдРрдк рдмрдирд╛рдпрд╛... рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд╡рд╣реА рдмрд╛рддред рдореИрдВрдиреЗ рдбрд┐рдмрдЧ рдПрдкреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╡рд╣реА рддреНрд░реБрдЯрд┐ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐"ред

рдЕрднреА рддрдХ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЬрд▓реНрдж рдЦреЛрд▓реЗрдВрдЧреЗ рдЗрд╢реНрдпреВ

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБред рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо!

рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛ 0.63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ !!

рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛ рдбрд┐рдмрдЧ рдкрд░ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдХреГрдкрдпрд╛ рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░реЗрдВ

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБред рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо!
рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛ 0.63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ !!
рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛ рдбрд┐рдмрдЧ рдкрд░ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдХреГрдкрдпрд╛ рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░реЗрдВ

@dlogvin рдпрд╣ рдПрдХ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╢ рдореЗрдВ рдХреБрдЫ рд╣реИ

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБред рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо!
рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛ 0.63.3 рдФрд░ рдлреНрд▓рд┐рдкрд░ рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ !!
рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛ рдбрд┐рдмрдЧ рдкрд░ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдХреГрдкрдпрд╛ рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░реЗрдВ

@dlogvin рдпрд╣ рдПрдХ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╢ рдореЗрдВ рдХреБрдЫ рд╣реИ

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рддрд░рдл рд╕реЗ ... рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдл рдирд┐рд░реНрдорд╛рдг рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдлрд┐рд░ рднреА рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ ...

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА RN рд╕рдВрд╕реНрдХрд░рдг 0.62 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЖрдкрдХреЛ рдпреВрд░реА, рдирд╛рдо рдФрд░ рдореАрдбрд┐рдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

рдлрд┐рд░ рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ:
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
android/app/src/debug/java/com/"рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо"/ReactNativeFlipper.java рдкрд░

рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрд░реАрдм 8 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВред

рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рднреА рд╣реИрдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд╣реА рдерд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛ред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

0.63.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдпрд╣ рдЕрдкрд▓реЛрдб рдлреЙрд░реНрдо рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛:

form.append('file', {
    uri: file,
    type: filetype,
    name: filename,
})

рддрдм рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХреАрдВ рдФрд░ рдлрд┐рд░ рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛:

form.append('file', {
    uri: file,
    type: 'audio/' + filetype,
    name: filename,
})

RN 63.3 рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

63.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╣рд▓ рд╣реИ

рдирд╣реАрдВ..

рдЖрд░рдПрди 63.3 рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 0.54.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ RN 63.3 рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП
рдПрдВрдбреНрд░реЙрдпрдб:
FLIPPER_VERSION android/gradle.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рдЖрдИрдУрдПрд╕:
рдкреЙрдб рдЗрдВрд╕реНрдЯреЙрд▓ --repo-update

рдореИрдВ RN 0.63.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ FLIPPER_VERSION рдХреЛ 0.54.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИ?

рдРрд╕рд╛ рдХрд┐рдпрд╛, рдпрд╣ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╡рдЬрд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.62.2 рдФрд░ рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: 0.33.1, рдПрдВрдбреНрд░реЙрдЗрдб/рдРрдк/src/рдбреАрдмрдЧ/рдЬрд╛рд╡рд╛/рдХреЙрдо/рдореИрдХреНрд╕рд┐рд░рд╛рдЗрдб/рдРрдк/рдореЗрдВ рд▓рд╛рдЗрди 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреАред рдбреНрд░рд╛рдЗрд╡рд░/ReactNativeFlipper.java рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЕрдкрд▓реЛрдб рдХрд╛ рдкреНрд░рдХрд╛рд░ рдареАрдХ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ,

рд╣рдореЗрдВ рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ RN 63.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рдорд░реНрдЬ рд╕рд╣реА рд╣реИред
https://react-native-community.github.io/upgrad-helper/

рд╣рд▓ рдХрд┐рдпрд╛!
package.json рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗрд╡реАрдЯ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓реЗрдВ:
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.63.3"
рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░:
android/gradle.properties
рдлреНрд▓рд┐рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓реЗрдВ:
FLIPPER_VERSION=0.54.0
рдЙрд╕рдХреЗ рдмрд╛рдж, рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдРрдк рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВред :)
рдЖрдИрдУрдПрд╕ рдХрджрдо:
https://react-native-community.github.io/upgrad-helper/ (рдмрд╕ RN рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдиреЗрдВ рдпрд╛ 0.63.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)

рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдмрдЪрд╛ рд▓реЗрдЧрд╛ред рдЗрд╕реА рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХрд┐рд╕реА рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╣реБрдИ (рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рди рдХрд░реЗрдВ!!!) рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ https рд╕рд░реНрд╡рд░ рдХреЗ ssl рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдереАред рд╕рдорд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рдЕрд╡рдзрд┐, рдФрд░ рдпрд╣реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдерд╛ред

рдЖрд░рдПрди: 0.61.5

рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╕реБрдЭрд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рджреЗрдЦрд╛ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖред рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдЧрд▓рддреА рдереА... рдореИрдВ рдЗрдореЗрдЬ рдкрд┐рдХрд░ рдХреЛ рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдмреБрд▓рд╛ рд░рд╣рд╛ рдерд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╡рд╣рд╛рдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЪреБрдирд╛ред рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд┐рдЫрд▓реЗ рдШрдЯрдХ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ред рд╡реЗ рдПрдХ рдлреЙрд░реНрдо рднрд░реЗрдВрдЧреЗ рдФрд░ рдлрд╝реЙрд░реНрдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рд╕рдорд╕реНрдпрд╛ рдереА, рдмрд╛рд▓ рдШрдЯрдХ рдореЗрдВ, рдореИрдВрдиреЗ ImagePicker.clear() рдХрд╣рд╛ред рдпрд╣ рдереЛрдбрд╝рд╛ рдмреЗрд░рдВрдЧ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рддреБрд░рдВрдд рдирд╣реАрдВ рджреЗрдЦрд╛ред рдореБрдЭреЗ рд╡рд╣реА рдорд┐рд▓рд╛ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдпреВрд░реА рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрд╛" рдмрд╛рдХреА рд╕рднреА рдХреЛ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╡рд░реНрдЬрди, рдлреНрд▓рд┐рдкрд░ рдФрд░ рдЧреНрд░реИрдбрд▓ рдХреЛ рд╕рдмрд╕реЗ рдЖрдЦрд┐рд░реА рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИред рддреЛ рд╡рд╣рд╛рдБ рд╣реИред рджреВрд╕рд░реА рдУрд░ рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ 3 рджрд┐рди рдЧрдВрд╡рд╛рдПред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдЬреАрдм рд╣реИред

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА RN рд╕рдВрд╕реНрдХрд░рдг 0.62 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╣реИ:
рдЖрдкрдХреЛ рдпреВрд░реА, рдирд╛рдо рдФрд░ рдореАрдбрд┐рдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

рдлрд┐рд░ рд▓рд╛рдЗрди рдирдВрдмрд░ 43 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрдореЗрдВрдЯ рдХрд░реЗрдВ:
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
android/app/src/debug/java/com/"рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо"/ReactNativeFlipper.java рдкрд░
рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрд░реАрдм 8 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВред

рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рднреА рд╣реИрдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд╣реА рдерд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛ред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХрд╛рдо рдордд рдХрд░реЛ

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рдкреЛрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдорд┐рд╕-рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдкрде рдкрд░ file:// рднрд╛рдЧ рдХреЛ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдЖрдИ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рд╣реИ рд╡реИрд╕рд╛ рд╣реА рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); рдХреЛ рд╣рдЯрд╛рдирд╛, рдореЗрд░реЗ рд▓рд┐рдП android рдФрд░ ios рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 0.62.2 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, RN 0.63.3 рдлрд╝реНрд▓рд┐рдкрд░ 0.54.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдлрд╝реЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╡реАрдбрд┐рдпреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ @murilocrugner рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдорд╛рд░ рдиреЗ рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рд╕рдордп рд╕реАрдорд╛ рднреА рдХрдо рд╣реИ

рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, RN 0.63.3 рдлрд╝реНрд▓рд┐рдкрд░ 0.54.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдлрд╝реЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╡реАрдбрд┐рдпреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ @murilocrugner рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдорд╛рд░ рдиреЗ рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рд╕рдордп рд╕реАрдорд╛ рднреА рдХрдо рд╣реИ

рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:

  1. rn-fetch-blob рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЙрдирдХреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ https://github.com/joltup/rn-fetch-blob
  2. рдлрд┐рд░ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ https://github.com/joltup/rn-fetch-blob#multipartform -data-example-post-form-data-with-file-and-data

рдореЗрд░рд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

@abumostafa рдЖрдк рдПрдХ рдХрд┐рдВрд╡рджрдВрддреА рд╣реИрдВред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреЛрдИ рднреА рдЕрднреА рднреА 0.63.3 рдФрд░ рдирд╡реАрдирддрдо рдлреНрд▓рд┐рдкрд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ - XMLHttpRequest рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдПрдВред рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрднреА рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ :
рдЖрд░рдПрди 0.63.3
рдлреНрд▓рд┐рдкрд░ 0.54.0

рдореИрдВрдиреЗ android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java рдореЗрдВ рд▓рд╛рдЗрди 43 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА

рдЕрднреА рднреА рд╡рд╣реА рдореБрджреНрджрд╛ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдХреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ 64 рдореЗрдВ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЙрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдирд╛ рд╣реИред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░рд╛рд╢ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ 2020 рдореЗрдВ рдХреБрдЫ рдЫреЛрдЯреА рдФрд░ рд╕рд░рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдмрд╕ рдмрд╕ ..рд╕рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред

TLDR: рдХрд┐рд╕реА рдХреЛ рднреА рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдмреЗрд╕ 64 рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рднреЗрдЬреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

despairblue picture despairblue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aniss picture aniss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

anchetaWern picture anchetaWern  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vikeri picture vikeri  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ