• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "userfile_client.h"
17 
18 #include "medialibrary_errno.h"
19 #include "medialibrary_napi_log.h"
20 #include "ability.h"
21 
22 using namespace std;
23 using namespace OHOS::DataShare;
24 using namespace OHOS::AppExecFwk;
25 namespace OHOS {
26 namespace Media {
27 
GetDataShareHelper(napi_env env,napi_callback_info info)28 shared_ptr<DataShare::DataShareHelper> UserFileClient::GetDataShareHelper(napi_env env, napi_callback_info info)
29 {
30     size_t argc = ARGS_ONE;
31     napi_value argv[ARGS_ONE] = {0};
32     napi_value thisVar = nullptr;
33     NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
34 
35     std::shared_ptr<DataShare::DataShareHelper> dataShareHelper = nullptr;
36     bool isStageMode = false;
37     napi_status status = OHOS::AbilityRuntime::IsStageContext(env, argv[0], isStageMode);
38     if (status != napi_ok || !isStageMode) {
39         auto ability = OHOS::AbilityRuntime::GetCurrentAbility(env);
40         if (ability == nullptr) {
41             NAPI_ERR_LOG("Failed to get native ability instance");
42             return nullptr;
43         }
44         auto context = ability->GetContext();
45         if (context == nullptr) {
46             NAPI_ERR_LOG("Failed to get native context instance");
47             return nullptr;
48         }
49         dataShareHelper = DataShare::DataShareHelper::Creator(context, MEDIALIBRARY_DATA_URI);
50     } else {
51         auto context = OHOS::AbilityRuntime::GetStageModeContext(env, argv[0]);
52         if (context == nullptr) {
53             NAPI_ERR_LOG("Failed to get native stage context instance");
54             return nullptr;
55         }
56         dataShareHelper = DataShare::DataShareHelper::Creator(context, MEDIALIBRARY_DATA_URI);
57     }
58     return dataShareHelper;
59 }
60 
IsValid()61 bool UserFileClient::IsValid()
62 {
63     return sDataShareHelper_ != nullptr;
64 }
65 
Init(napi_env env,napi_callback_info info)66 void UserFileClient::Init(napi_env env, napi_callback_info info)
67 {
68     sDataShareHelper_ = GetDataShareHelper(env, info);
69 }
70 
Query(Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns)71 shared_ptr<DataShareResultSet> UserFileClient::Query(Uri &uri, const DataSharePredicates &predicates,
72     std::vector<std::string> &columns)
73 {
74     if (!IsValid()) {
75         NAPI_ERR_LOG("Query fail, helper null");
76         return nullptr;
77     }
78     return sDataShareHelper_->Query(uri, predicates, columns);
79 }
80 
Insert(Uri & uri,const DataShareValuesBucket & value)81 int UserFileClient::Insert(Uri &uri, const DataShareValuesBucket &value)
82 {
83     if (!IsValid()) {
84         NAPI_ERR_LOG("insert fail, helper null");
85         return E_FAIL;
86     }
87     return sDataShareHelper_->Insert(uri, value);
88 }
89 
Delete(Uri & uri,const DataSharePredicates & predicates)90 int UserFileClient::Delete(Uri &uri, const DataSharePredicates &predicates)
91 {
92     if (!IsValid()) {
93         NAPI_ERR_LOG("delete fail, helper null");
94         return E_FAIL;
95     }
96     return sDataShareHelper_->Delete(uri, predicates);
97 }
98 
NotifyChange(const Uri & uri)99 void UserFileClient::NotifyChange(const Uri &uri)
100 {
101     if (!IsValid()) {
102         NAPI_ERR_LOG("notify change fail, helper null");
103         return;
104     }
105     sDataShareHelper_->NotifyChange(uri);
106 }
107 
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)108 void UserFileClient::RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
109 {
110     if (!IsValid()) {
111         NAPI_ERR_LOG("register observer fail, helper null");
112         return;
113     }
114     sDataShareHelper_->RegisterObserver(uri, dataObserver);
115 }
116 
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)117 void UserFileClient::UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
118 {
119     if (!IsValid()) {
120         NAPI_ERR_LOG("unregister observer fail, helper null");
121         return;
122     }
123     sDataShareHelper_->UnregisterObserver(uri, dataObserver);
124 }
125 
OpenFile(Uri & uri,const std::string & mode)126 int UserFileClient::OpenFile(Uri &uri, const std::string &mode)
127 {
128     if (!IsValid()) {
129         NAPI_ERR_LOG("unregister observer fail, helper null");
130         return E_FAIL;
131     }
132     return sDataShareHelper_->OpenFile(uri, mode);
133 }
134 
Update(Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)135 int UserFileClient::Update(Uri &uri, const DataSharePredicates &predicates,
136     const DataShareValuesBucket &value)
137 {
138     if (!IsValid()) {
139         NAPI_ERR_LOG("update fail, helper null");
140         return E_FAIL;
141     }
142     return sDataShareHelper_->Update(uri, predicates, value);
143 }
144 
145 }
146 }