Time Controlled Presets/macros drop-downs do not populate on some devices

Abierto Apto para principiantes
#5,840 12 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
70/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
javascript
Área
frontend

Línea de trabajo

Empieza en settings_time.htm, en populatePresets(fromls), donde localStorage.getItem("wledP") puede devolver null en navegadores de teléfonos. Compara la ruta de datos almacenados en caché con la ruta de obtención de /presets.json y luego reproduce el problema en un navegador de teléfono y en uno de estación de trabajo. La tarea está terminada cuando los menús desplegables de presets y macros se rellenan de forma coherente en los dispositivos reportados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug cannot reproduce
What happened?

The drop-down to select preset shows empty on devices like phones vs workstation browsers. In settings_time.htm the line json = JSON.parse(localStorage.getItem("wledP")); is null when running off my phone's browser.

To Reproduce Bug

Try it off other devices

Expected Behavior

Presets should be getting loaded for drop-downs across range of devices

Install Method

Self-Compiled

What version of WLED?

WLED 17.0.0-devV5 (2607201)

Which microcontroller/board are you seeing the problem on?

ESP32-C3

Relevant log/trace output

Anything else?

I believe I found a fix- on settings_time.htm I updated populatePresets(fromls) to...

function populatePresets(fromls) { let json = null; 
	if (fromls) { 
		try { 
			json = JSON.parse(localStorage.getItem("wledP")); 
		} catch (e) { 
			console.log("Unable to parse cached presets:", e); 
		} 
	}
	if (json) { 
		onPresetsLoaded(json); 
		return; 
	} 
	fetch(getURL("/presets.json")) 
		.then(response => { 
			if (!response.ok) {
				 throw new Error("HTTP " + response.status);
			} return response.json(); 
		}) 
		.then(json => { 
			try { 
				localStorage.setItem("wledP", JSON.stringify(json)); 
			} catch (e) {
				console.log("Unable to cache presets:", e); 
			} 
			onPresetsLoaded(json); 
		}) 
		.catch(error => { 
			console.log("Unable to load presets:", error); 
			showToast("Unable to load presets", true);
		}); }
Code of Conduct
  • I agree to follow this project's Code of Conduct
Lenguaje dominante
C++
Estrellas
18.8k
Forks
4.4k
Merge medio
3 d 5 h
PR fusionados (30 d)
14

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de wled/WLED

Todos los issues de wled/WLED

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.