From 9b27dd0802b281ca851f1c0bfaf6d494b7ee2cd5 Mon Sep 17 00:00:00 2001 From: driesdl Date: Mon, 13 Oct 2025 12:20:20 +0200 Subject: [PATCH 1/5] ember polaris - fetch data example --- .../2-fetch-data/emberPolaris/fetch-data.gjs | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs diff --git a/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs b/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs new file mode 100644 index 00000000..deb10892 --- /dev/null +++ b/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs @@ -0,0 +1,52 @@ +import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; + +class State { + @tracked isLoading = false; + @tracked error = null; + @tracked data = null; +} + +function getUsers() { + let state = new State(); + + async function fetchData() { + state.isLoading = true; + try { + let response = await fetch("https://randomuser.me/api/?results=3"); + let { results: users } = await response.json(); + state.data = users; + state.error = null; + } catch (err) { + state.data = null; + state.error = err; + } + state.isLoading = false; + } + + fetchData(); + return state; +} + +export default class App extends Component { + fetchUsers = () => getUsers(); + + +} \ No newline at end of file From 07db11b7d65f96da58aee37fc8bad328d0ee950d Mon Sep 17 00:00:00 2001 From: driesdl Date: Mon, 13 Oct 2025 14:22:08 +0200 Subject: [PATCH 2/5] PR feedback --- .../2-fetch-data/emberPolaris/fetch-data.gjs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs b/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs index deb10892..da87ca28 100644 --- a/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs +++ b/content/7-webapp-features/2-fetch-data/emberPolaris/fetch-data.gjs @@ -7,11 +7,10 @@ class State { @tracked data = null; } -function getUsers() { +function fetchUsers() { let state = new State(); async function fetchData() { - state.isLoading = true; try { let response = await fetch("https://randomuser.me/api/?results=3"); let { results: users } = await response.json(); @@ -29,8 +28,6 @@ function getUsers() { } export default class App extends Component { - fetchUsers = () => getUsers(); -