Applets/Network: Port get_adapter_info() to ErrorOr<String>

This commit is contained in:
Karol Kosek 2023-08-23 20:12:35 +02:00 committed by Andreas Kling
parent a3ddba4191
commit dd92d09268

View file

@ -53,16 +53,16 @@ private:
void update_widget()
{
auto adapter_info = get_adapter_info();
if (adapter_info == "") {
auto adapter_info_or_error = get_adapter_info();
if (adapter_info_or_error.is_error()) {
dbgln("Couldn't update adapter info: {}", adapter_info_or_error.error());
set_connected(false);
m_adapter_info = "No network adapters";
m_adapter_info = "No network adapters"_string;
} else {
m_adapter_info = adapter_info;
m_adapter_info = adapter_info_or_error.release_value();
}
set_tooltip_deprecated(m_adapter_info);
set_tooltip(m_adapter_info);
if (m_connected)
NetworkWidget::set_bitmap(m_connected_icon);
@ -103,29 +103,15 @@ private:
m_connected = connected;
}
DeprecatedString get_adapter_info()
ErrorOr<String> get_adapter_info()
{
auto file = TRY(Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read));
auto file_contents = TRY(file->read_until_eof());
auto json = TRY(JsonValue::from_string(file_contents));
StringBuilder adapter_info;
auto file_or_error = Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read);
if (file_or_error.is_error()) {
dbgln("Error: Could not open /sys/kernel/net/adapters: {}", file_or_error.error());
return "";
}
auto file_contents_or_error = file_or_error.value()->read_until_eof();
if (file_contents_or_error.is_error()) {
dbgln("Error: Could not read /sys/kernel/net/adapters: {}", file_contents_or_error.error());
return "";
}
auto json = JsonValue::from_string(file_contents_or_error.value());
if (json.is_error())
return adapter_info.to_deprecated_string();
int connected_adapters = 0;
json.value().as_array().for_each([&adapter_info, &connected_adapters](auto& value) {
json.as_array().for_each([&adapter_info, &connected_adapters](auto& value) {
auto& if_object = value.as_object();
auto ip_address = if_object.get_deprecated_string("ipv4_address"sv).value_or("no IP");
auto ifname = if_object.get_deprecated_string("name"sv).value();
@ -151,10 +137,10 @@ private:
// show connected icon so long as at least one adapter is connected
connected_adapters ? set_connected(true) : set_connected(false);
return adapter_info.to_deprecated_string();
return adapter_info.to_string();
}
DeprecatedString m_adapter_info;
String m_adapter_info;
bool m_connected = false;
bool m_notifications = true;
NonnullRefPtr<Gfx::Bitmap> m_connected_icon;