add clone support

This commit is contained in:
Kr328
2020-04-13 12:15:37 +08:00
parent 04eed1a768
commit d5d219789f
2 changed files with 11 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ import com.github.kr328.clash.service.model.ProfileMetadata;
interface IProfileService {
long acquireUnused(String type);
long acquireCloned(long id);
void updateMetadata(long id, in ProfileMetadata metadata);
void commit(long id, in IStreamCallback callback);
void cancel(long id);

View File

@@ -78,6 +78,16 @@ class ProfileService : BaseService() {
}
}
override fun acquireCloned(id: Long): Long {
return runBlocking {
val clonedId = (ProfileDao.queryAllIds() + pending.keys).max()?.plus(1) ?: 0
pending[clonedId] = queryMetadataById(id) ?: return@runBlocking -1
clonedId
}
}
override fun queryActive(): ProfileMetadata? {
return runBlocking {
ProfileDao.queryActive()?.toProfileMetadata(service)