chore: update version to 1.4.3, enhance printing service, and add MyTcpSocket module
This commit is contained in:
		@@ -93,7 +93,7 @@ android {
 | 
				
			|||||||
        minSdkVersion rootProject.ext.minSdkVersion
 | 
					        minSdkVersion rootProject.ext.minSdkVersion
 | 
				
			||||||
        targetSdkVersion rootProject.ext.targetSdkVersion
 | 
					        targetSdkVersion rootProject.ext.targetSdkVersion
 | 
				
			||||||
        versionCode 1
 | 
					        versionCode 1
 | 
				
			||||||
        versionName "1.4.2"
 | 
					        versionName "1.4.3"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    signingConfigs {
 | 
					    signingConfigs {
 | 
				
			||||||
        debug {
 | 
					        debug {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,7 @@ class MainApplication : Application(), ReactApplication {
 | 
				
			|||||||
                val packages = PackageList(this).packages
 | 
					                val packages = PackageList(this).packages
 | 
				
			||||||
                packages.add(PdfToBitmapPackage())
 | 
					                packages.add(PdfToBitmapPackage())
 | 
				
			||||||
                packages.add(TcpSocketPackage())
 | 
					                packages.add(TcpSocketPackage())
 | 
				
			||||||
 | 
					                packages.add(MyTcpSocketPackage())
 | 
				
			||||||
                return packages
 | 
					                return packages
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					package com.anonymous.Assemblr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.ReactApplicationContext;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.ReactContextBaseJavaModule;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.ReactMethod;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.Promise;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.ReadableArray;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.OutputStream;
 | 
				
			||||||
 | 
					import java.net.Socket;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class MyTcpSocketModule extends ReactContextBaseJavaModule {
 | 
				
			||||||
 | 
					    public MyTcpSocketModule(ReactApplicationContext reactContext) {
 | 
				
			||||||
 | 
					        super(reactContext);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String getName() {
 | 
				
			||||||
 | 
					        return "MyTcpSocket";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ReactMethod
 | 
				
			||||||
 | 
					    public void writeToSocket(String ip, int port, ReadableArray data, Promise promise) {
 | 
				
			||||||
 | 
					        try (Socket socket = new Socket(ip, port)) {
 | 
				
			||||||
 | 
					            OutputStream output = socket.getOutputStream();
 | 
				
			||||||
 | 
					            for (int i = 0; i < data.size(); i++) {
 | 
				
			||||||
 | 
					                String item = data.getString(i);
 | 
				
			||||||
 | 
					                assert item != null;
 | 
				
			||||||
 | 
					                output.write(item.getBytes());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            output.flush();
 | 
				
			||||||
 | 
					            promise.resolve("ok");
 | 
				
			||||||
 | 
					        } catch (IOException e) {
 | 
				
			||||||
 | 
					            promise.reject("ERROR", e.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					package com.anonymous.Assemblr;
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.facebook.react.ReactPackage;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.NativeModule;
 | 
				
			||||||
 | 
					import com.facebook.react.bridge.ReactApplicationContext;
 | 
				
			||||||
 | 
					import com.facebook.react.uimanager.ViewManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class MyTcpSocketPackage implements ReactPackage {
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
 | 
				
			||||||
 | 
					        List<NativeModule> modules = new ArrayList<>();
 | 
				
			||||||
 | 
					        modules.add(new MyTcpSocketModule(reactContext));
 | 
				
			||||||
 | 
					        return modules;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
 | 
				
			||||||
 | 
					        return Collections.emptyList();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								app.json
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								app.json
									
									
									
									
									
								
							@@ -12,7 +12,7 @@
 | 
				
			|||||||
    ],
 | 
					    ],
 | 
				
			||||||
    "name": "Assemblr",
 | 
					    "name": "Assemblr",
 | 
				
			||||||
    "slug": "Assemblr",
 | 
					    "slug": "Assemblr",
 | 
				
			||||||
    "version": "1.4.2",
 | 
					    "version": "1.4.3",
 | 
				
			||||||
    "orientation": "portrait",
 | 
					    "orientation": "portrait",
 | 
				
			||||||
    "icon": "./src/assets/icon.png",
 | 
					    "icon": "./src/assets/icon.png",
 | 
				
			||||||
    "userInterfaceStyle": "light",
 | 
					    "userInterfaceStyle": "light",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,6 +101,7 @@ const styles = StyleSheet.create({
 | 
				
			|||||||
        borderBottomLeftRadius: responsiveWidth(1),
 | 
					        borderBottomLeftRadius: responsiveWidth(1),
 | 
				
			||||||
        paddingLeft: responsiveHeight(2),
 | 
					        paddingLeft: responsiveHeight(2),
 | 
				
			||||||
        fontSize: RFPercentage(2),
 | 
					        fontSize: RFPercentage(2),
 | 
				
			||||||
 | 
					        color:"black",
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								src/connectors/myTcpSocket.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/connectors/myTcpSocket.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					import { NativeModules } from 'react-native';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const { MyTcpSocket } = NativeModules;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface MyTcpSocketInterface {
 | 
				
			||||||
 | 
					    writeToSocket(ip: string, port: number, data: string[]): Promise<string>;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const myTcpSocket: MyTcpSocketInterface = {
 | 
				
			||||||
 | 
					    writeToSocket: async (ip: string, port: number, data: string[]): Promise<string> => {
 | 
				
			||||||
 | 
					        return await MyTcpSocket.writeToSocket(ip, port, data);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -2,9 +2,8 @@ import {Text, View} from "react-native";
 | 
				
			|||||||
import BasicButton from "../../components/BasicButton/BasicButton";
 | 
					import BasicButton from "../../components/BasicButton/BasicButton";
 | 
				
			||||||
import {useScanningContext} from "../../providers/ScanProvider";
 | 
					import {useScanningContext} from "../../providers/ScanProvider";
 | 
				
			||||||
import printingApi from "../../api/printingApi";
 | 
					import printingApi from "../../api/printingApi";
 | 
				
			||||||
import {convertPdfToBitmaps} from "../../connectors/PdfToBitmap";
 | 
					 | 
				
			||||||
import TcpSocket from 'react-native-tcp-socket';
 | 
					 | 
				
			||||||
import {Zpl} from "react-native-zpl-code";
 | 
					import {Zpl} from "react-native-zpl-code";
 | 
				
			||||||
 | 
					import PrintingService from "../../utils/PrintingService";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function generateZplCodes(images: string[]) {
 | 
					async function generateZplCodes(images: string[]) {
 | 
				
			||||||
    const zplCodes = [];
 | 
					    const zplCodes = [];
 | 
				
			||||||
@@ -49,39 +48,13 @@ function MoneyScreen() {
 | 
				
			|||||||
    const {scan} = useScanningContext();
 | 
					    const {scan} = useScanningContext();
 | 
				
			||||||
    const a = "123";
 | 
					    const a = "123";
 | 
				
			||||||
    const onPress = () => {
 | 
					    const onPress = () => {
 | 
				
			||||||
        printingApi.getLabel(386618).then(async result => {
 | 
					        printingApi.getLabel(391845).then(async result => {
 | 
				
			||||||
            const images = await convertPdfToBitmaps(result);
 | 
					            PrintingService.getInstance().printPdf("", result).then(() => {
 | 
				
			||||||
            const client = TcpSocket.createConnection(
 | 
					                    console.log("Printed successfully");
 | 
				
			||||||
                {
 | 
					                }
 | 
				
			||||||
                    host: "192.168.1.69",
 | 
					            ).catch(error => {
 | 
				
			||||||
                    port: 9100,
 | 
					                console.error("Error printing:", error);
 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                () => {
 | 
					 | 
				
			||||||
                    console.log('Connected')
 | 
					 | 
				
			||||||
                    generateZplCodes(images).then(codes => {
 | 
					 | 
				
			||||||
                        console.log('Generated codes')
 | 
					 | 
				
			||||||
                        codes.forEach((code, idx) => {
 | 
					 | 
				
			||||||
                            console.log(`Printing ${idx}`)
 | 
					 | 
				
			||||||
                            client.write(code)
 | 
					 | 
				
			||||||
                        })
 | 
					 | 
				
			||||||
                        console.log('Ending')
 | 
					 | 
				
			||||||
                        client.end();
 | 
					 | 
				
			||||||
                        // client.destroy();
 | 
					 | 
				
			||||||
                        console.log('Disconnected')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
            client.on("error", error => {
 | 
					 | 
				
			||||||
                console.log("Error:", error);
 | 
					 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Handle connection close
 | 
					 | 
				
			||||||
            client.on("close", () => {
 | 
					 | 
				
			||||||
                console.log("Connection closed");
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ function ProfileScreen() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            </View>
 | 
					            </View>
 | 
				
			||||||
            <View style={styles.printerInputView}>
 | 
					            <View style={styles.printerInputView}>
 | 
				
			||||||
                <TextInput onChangeText={onPrinterIpChange} style={styles.printerInput}
 | 
					                <TextInput onChangeText={onPrinterIpChange} defaultValue={printerIp} style={styles.printerInput}
 | 
				
			||||||
                           placeholderTextColor={"black"} placeholder={"IP принтера"}/>
 | 
					                           placeholderTextColor={"black"} placeholder={"IP принтера"}/>
 | 
				
			||||||
            </View>
 | 
					            </View>
 | 
				
			||||||
            <View style={styles.content}>
 | 
					            <View style={styles.content}>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import TcpSocket from "react-native-tcp-socket";
 | 
					 | 
				
			||||||
import * as SecureStore from 'expo-secure-store';
 | 
					import * as SecureStore from 'expo-secure-store';
 | 
				
			||||||
 | 
					import {myTcpSocket} from "../connectors/myTcpSocket";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PrintingService {
 | 
					class PrintingService {
 | 
				
			||||||
    private static instance: PrintingService | null = null;
 | 
					    private static instance: PrintingService | null = null;
 | 
				
			||||||
@@ -27,36 +27,14 @@ class PrintingService {
 | 
				
			|||||||
        // const images = await convertPdfToBitmaps(pdf);
 | 
					        // const images = await convertPdfToBitmaps(pdf);
 | 
				
			||||||
        // const codes = await this.generateZplCodes(images);
 | 
					        // const codes = await this.generateZplCodes(images);
 | 
				
			||||||
        const codes = pdf.labels;
 | 
					        const codes = pdf.labels;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            const result = await myTcpSocket.writeToSocket(printerIp, 9100, codes);
 | 
				
			||||||
 | 
					        } catch (error) {
 | 
				
			||||||
 | 
					            console.error("Error printing label:", error);
 | 
				
			||||||
 | 
					            await Promise.reject(error)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        await Promise.resolve()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return new Promise<void>((resolve, reject) => {
 | 
					 | 
				
			||||||
            // Create and connect the socket
 | 
					 | 
				
			||||||
            const client = TcpSocket.createConnection({host: printerIp, port: 9100}, () => {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                // Write each ZPL chunk
 | 
					 | 
				
			||||||
                codes.forEach((code, idx) => {
 | 
					 | 
				
			||||||
                    console.log(`Printing ${idx}`);
 | 
					 | 
				
			||||||
                    client.write(code);
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                client.end();
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Reject on socket error
 | 
					 | 
				
			||||||
            client.on("error", (err) => {
 | 
					 | 
				
			||||||
                console.error("Socket error:", err);
 | 
					 | 
				
			||||||
                reject(err);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Resolve when the socket fully closes
 | 
					 | 
				
			||||||
            client.on("close", (hadError) => {
 | 
					 | 
				
			||||||
                if (hadError) {
 | 
					 | 
				
			||||||
                    // close after an error will have already rejected
 | 
					 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                console.log("Connection closed");
 | 
					 | 
				
			||||||
                resolve();
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -78,7 +56,6 @@ class PrintingService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public getPrinter(baseMarketplace: number): string {
 | 
					    public getPrinter(baseMarketplace: number): string {
 | 
				
			||||||
        if (baseMarketplace == 2) return 'ozon';
 | 
					 | 
				
			||||||
        return "wildberries";
 | 
					        return "wildberries";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user