default:
return false;
}
- if (reply.GetString(dbus::kCmdResultKey) != "ok")
- return false;
- return true;
+
+ if (reply.GetString(dbus::kCmdResultKey) == "ok")
+ return true;
+
+ if (operation == ThemeOperation::ADD && getuid() == 0) {
+ LOG(WARNING) << "This case maybe a db initializing. "
+ << "Try update instead of insert.";
+ reply = broker.SendData(Command::UPDATE, theme_info);
+ if (reply.GetString(dbus::kCmdResultKey) == "ok")
+ return true;
+ }
+
+ return false;
}
bool ThemeParser::ForceCommit(ThemeOperation operation,
ttm::provider::ThemeInfoProxy proxy("/opt/dbspace/.tizen_theme.db");
switch (operation) {
case ThemeOperation::ADD:
- return proxy.SaveTheme(theme);
+ // if pkgmgr db re-initialized, insert may failed, try update instead.
+ if (!proxy.SaveTheme(theme))
+ return proxy.UpdateTheme(theme);
+ return true;
case ThemeOperation::UPDATE:
return proxy.UpdateTheme(theme);
case ThemeOperation::REMOVE: