Trying to load image on a mesh but not appearing

im trying to load an image on a mesh in ionic angular using three.js very new to this and i cant get it to work at all

const scene = new THREE.Scene();
scene.background = new THREE.Color(0xffffff);

const camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
camera.position.set(0, 2, 3);

const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;

const dirLight = new THREE.DirectionalLight(0xffffff, 1);
dirLight.position.set(5, 10, 7.5);
scene.add(dirLight, new THREE.AmbientLight(0xffffff, 0.5));

const designCanvas = document.createElement('canvas');
designCanvas.width = 1024;
designCanvas.height = 1024;
const ctx = designCanvas.getContext('2d')!;
ctx.fillStyle = '#ffffff';
ctx.fillRect(0, 0, 1024, 1024);
const designTexture = new THREE.CanvasTexture(designCanvas);
designTexture.flipY = false;

const loader = new GLTFLoader();
loader.load('assets/models/t_shirt.glb', (gltf) => {
    const model = gltf.scene;
    scene.add(model);

    model.traverse((child) => {
        if ((child as THREE.Mesh).isMesh) {
            const mesh = child as THREE.Mesh;
            console.log('UVs:', mesh.geometry.getAttribute('uv'));
            const materials: THREE.Material[] = Array.isArray(mesh.material) ? ([] as THREE.Material[]).concat(...mesh.material) : [mesh.material];
            materials.forEach((mat) => {
                const standardMat = mat as THREE.MeshStandardMaterial;
                standardMat.map = designTexture;
                standardMat.color.set('#ffffff');
                standardMat.needsUpdate = true;
            });
        }
    });
    const img = new Image();
    img.src = 'assets/textures/toji.jpg';
    img.onload = () => {
        ctx.drawImage(img, 0, 0, designCanvas.width, designCanvas.height);
        designTexture.needsUpdate = true;
    };
}, undefined, (err) => console.error(err));

function animate() {
    requestAnimationFrame(animate);
    controls.update();
    renderer.render(scene, camera);
}
animate();