Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6af6e3a4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Create new RcsMessageQueryResultParcelable"

parents 833edcbb 35d29333
Loading
Loading
Loading
Loading
+11 −62
Original line number Original line Diff line number Diff line
@@ -20,13 +20,9 @@ import static android.provider.Telephony.RcsColumns.RcsUnifiedMessageColumns.MES


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;


import com.android.ims.RcsTypeIdPair;

import java.util.ArrayList;
import java.util.List;
import java.util.List;
import java.util.stream.Collectors;


/**
/**
 * The result of a {@link RcsMessageStore#getRcsMessages(RcsMessageQueryParams)}
 * The result of a {@link RcsMessageStore#getRcsMessages(RcsMessageQueryParams)}
@@ -35,23 +31,11 @@ import java.util.List;
 *
 *
 * @hide
 * @hide
 */
 */
public final class RcsMessageQueryResult implements Parcelable {
public final class RcsMessageQueryResult {
    // The token to continue the query to get the next batch of results
    private final RcsMessageQueryResultParcelable mRcsMessageQueryResultParcelable;
    private RcsQueryContinuationToken mContinuationToken;
    // The message type and message ID pairs for all the messages in this query result
    private List<RcsTypeIdPair> mMessageTypeIdPairs;


    /**
    RcsMessageQueryResult(RcsMessageQueryResultParcelable rcsMessageQueryResultParcelable) {
     * Internal constructor for {@link com.android.internal.telephony.ims.RcsMessageStoreController}
        mRcsMessageQueryResultParcelable = rcsMessageQueryResultParcelable;
     * to create query results
     *
     * @hide
     */
    public RcsMessageQueryResult(
            RcsQueryContinuationToken continuationToken,
            List<RcsTypeIdPair> messageTypeIdPairs) {
        mContinuationToken = continuationToken;
        mMessageTypeIdPairs = messageTypeIdPairs;
    }
    }


    /**
    /**
@@ -61,7 +45,7 @@ public final class RcsMessageQueryResult implements Parcelable {
     */
     */
    @Nullable
    @Nullable
    public RcsQueryContinuationToken getContinuationToken() {
    public RcsQueryContinuationToken getContinuationToken() {
        return mContinuationToken;
        return mRcsMessageQueryResultParcelable.mContinuationToken;
    }
    }


    /**
    /**
@@ -71,45 +55,10 @@ public final class RcsMessageQueryResult implements Parcelable {
     */
     */
    @NonNull
    @NonNull
    public List<RcsMessage> getMessages() {
    public List<RcsMessage> getMessages() {
        List<RcsMessage> messages = new ArrayList<>();
        return mRcsMessageQueryResultParcelable.mMessageTypeIdPairs.stream()
        for (RcsTypeIdPair typeIdPair : mMessageTypeIdPairs) {
                .map(typeIdPair -> typeIdPair.getType() == MESSAGE_TYPE_INCOMING
            if (typeIdPair.getType() == MESSAGE_TYPE_INCOMING) {
                        ? new RcsIncomingMessage(typeIdPair.getId())
                messages.add(new RcsIncomingMessage(typeIdPair.getId()));
                        : new RcsOutgoingMessage(typeIdPair.getId()))
            } else {
                .collect(Collectors.toList());
                messages.add(new RcsOutgoingMessage(typeIdPair.getId()));
            }
        }

        return messages;
    }

    private RcsMessageQueryResult(Parcel in) {
        mContinuationToken = in.readParcelable(
                RcsQueryContinuationToken.class.getClassLoader());
        in.readTypedList(mMessageTypeIdPairs, RcsTypeIdPair.CREATOR);
    }

    public static final @android.annotation.NonNull Creator<RcsMessageQueryResult> CREATOR =
            new Creator<RcsMessageQueryResult>() {
                @Override
                public RcsMessageQueryResult createFromParcel(Parcel in) {
                    return new RcsMessageQueryResult(in);
                }

                @Override
                public RcsMessageQueryResult[] newArray(int size) {
                    return new RcsMessageQueryResult[size];
                }
            };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(mContinuationToken, flags);
        dest.writeTypedList(mMessageTypeIdPairs);
    }
    }
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -17,4 +17,4 @@


package android.telephony.ims;
package android.telephony.ims;


parcelable RcsMessageQueryResult;
parcelable RcsMessageQueryResultParcelable;
+74 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.telephony.ims;

import android.os.Parcel;
import android.os.Parcelable;

import com.android.ims.RcsTypeIdPair;

import java.util.ArrayList;
import java.util.List;

/**
 * @hide - used only for internal communication with the ircs service
 */
public class RcsMessageQueryResultParcelable implements Parcelable {
    // The token to continue the query to get the next batch of results
    final RcsQueryContinuationToken mContinuationToken;
    // The message type and message ID pairs for all the messages in this query result
    final List<RcsTypeIdPair> mMessageTypeIdPairs;

    public RcsMessageQueryResultParcelable(
            RcsQueryContinuationToken continuationToken,
            List<RcsTypeIdPair> messageTypeIdPairs) {
        mContinuationToken = continuationToken;
        mMessageTypeIdPairs = messageTypeIdPairs;
    }

    private RcsMessageQueryResultParcelable(Parcel in) {
        mContinuationToken = in.readParcelable(
                RcsQueryContinuationToken.class.getClassLoader());

        mMessageTypeIdPairs = new ArrayList<>();
        in.readTypedList(mMessageTypeIdPairs, RcsTypeIdPair.CREATOR);
    }

    public static final Creator<RcsMessageQueryResultParcelable> CREATOR =
            new Creator<RcsMessageQueryResultParcelable>() {
                @Override
                public RcsMessageQueryResultParcelable createFromParcel(Parcel in) {
                    return new RcsMessageQueryResultParcelable(in);
                }

                @Override
                public RcsMessageQueryResultParcelable[] newArray(int size) {
                    return new RcsMessageQueryResultParcelable[size];
                }
            };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(mContinuationToken, flags);
        dest.writeTypedList(mMessageTypeIdPairs);
    }
}
+4 −2
Original line number Original line Diff line number Diff line
@@ -104,7 +104,8 @@ public class RcsMessageStore {
    @NonNull
    @NonNull
    public RcsMessageQueryResult getRcsMessages(
    public RcsMessageQueryResult getRcsMessages(
            @Nullable RcsMessageQueryParams queryParameters) throws RcsMessageStoreException {
            @Nullable RcsMessageQueryParams queryParameters) throws RcsMessageStoreException {
        return RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters));
        return new RcsMessageQueryResult(
                RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters)));
    }
    }


    /**
    /**
@@ -118,7 +119,8 @@ public class RcsMessageStore {
    @NonNull
    @NonNull
    public RcsMessageQueryResult getRcsMessages(
    public RcsMessageQueryResult getRcsMessages(
            @NonNull RcsQueryContinuationToken continuationToken) throws RcsMessageStoreException {
            @NonNull RcsQueryContinuationToken continuationToken) throws RcsMessageStoreException {
        return RcsControllerCall.call(iRcs -> iRcs.getMessagesWithToken(continuationToken));
        return new RcsMessageQueryResult(
                RcsControllerCall.call(iRcs -> iRcs.getMessagesWithToken(continuationToken)));
    }
    }


    /**
    /**
+3 −1
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.internal.annotations.VisibleForTesting;
public abstract class RcsThread {
public abstract class RcsThread {
    /**
    /**
     * The rcs_participant_thread_id that represents this thread in the database
     * The rcs_participant_thread_id that represents this thread in the database
     *
     * @hide
     * @hide
     */
     */
    protected int mThreadId;
    protected int mThreadId;
@@ -110,7 +111,8 @@ public abstract class RcsThread {
    public RcsMessageQueryResult getMessages() throws RcsMessageStoreException {
    public RcsMessageQueryResult getMessages() throws RcsMessageStoreException {
        RcsMessageQueryParams queryParameters =
        RcsMessageQueryParams queryParameters =
                new RcsMessageQueryParams.Builder().setThread(this).build();
                new RcsMessageQueryParams.Builder().setThread(this).build();
        return RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters));
        return new RcsMessageQueryResult(
                RcsControllerCall.call(iRcs -> iRcs.getMessages(queryParameters)));
    }
    }


    /**
    /**
Loading